Как скопировать картинку из канвы
Всем доброго времени суток.
Подскажите как можно сохранить изображение с канвы формы в файл.
imgPaintPic.LoadFromFile('Data/Paint/'+IntToStr(PicNum)+'.bmp'); frmMain.Canvas.Refresh; frmMain.Canvas.Draw(11,11,imgPaintPic);
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Регистрация: 22.11.2006
Сообщений: 9,201
Как сделать BMP снимок с экрана?
var Desktopcanvas :TCanvas ; BitMap :TBitMap; begin DesktopCanvas:=TCanvas.Create; DesktopCanvas.Handle:=GetDC(Hwnd_Desktop); BitMap := TBitMap.Create; BitMap.Width := Screen.Width; BitMap.Height:=Screen.Height; Bitmap.Canvas.CopyRect(Bitmap.Canvas.ClipRect, DesktopCanvas, DesktopCanvas.ClipRect); bitmap.SaveToFile('c:\windows\screen.bmp'); image1.Picture.LoadFromFile('c:\windows\screen.bmp'); end;
var ScreenDC:HDC; Canvas:TCanvas; Image1:TImage; Begin ScreenDC := GetDC(0); Canvas:=TCanvas.Create(); Canvas.Handle:=ScreenDC; Image1 := TImage.Create(nil); Image1.Width := Screen.Width Image1.Height := Screen.Height Image1.Canvas.CopyRect(Rect(0, 0, Image1.Width, Image 1.Height), Canvas, Rect(0, 0, Screen.Width, Screen.Height)); ReleaseDC(0,ScreenDC); Canvas.Free; end;
Вам осталось подставить нужные значения Rect для клиентской области своей формы. А в совете Алара — добавить сохранение Image1 в файл.
Сохранение проекта из канвы
После поиска изображений и подключения к канве, вы можете сохранить свою работу в проекте Excalibur . Щелкните Сохранить , чтобы сохранить ваш прогресс по просмотренным и проанализированным изображениям. Для сохранения необходимы соответствующие права. Кнопка Сохранить отображается в заголовке панели инструментов в виде канвы, если у вас есть соответствующие права.
Сохранение проекта
Чтобы сохранить свою работу в проекте, выполните следующие шаги:
- Щелкните Сохранить на панели инструментов канвы.
Откроется диалоговое окно Создать проект Excalibur .
-
Заголовок (Обязательно)
Примечание:
Это имя должно быть уникальным. Если в ваших ресурсах будет обнаружено указанное имя, на портале будет создана новая папка с тем же именем и добавленным словом копия.
Подсказка:
Вы можете выделить свои инструкции, щёлкнув Полужирный или Курсив . Также вы можете создать список, щёлкнув Неупорядоченный список или Нумерованный список .
Дополнительно, вы можете опубликовать проект в группе портала. По умолчанию это Владелец .
Появится загрузчик и вы получите уведомление, как только проект будет успешно создан. Также появится заголовок проекта с отображением внесенных изменений, а на вашем портале будет создана папка проекта.
Примечание:
Для сохранения и обновления проекта необходимо быть его владельцем.
Вы можете продолжать работу над проектом или внести дополнительные изменения на странице Информация о проекте .
Сохранение разметки в проекте
Вы можете сохранить созданную вами разметку как коллекцию объектов, которая хранится в проекте Excalibur . См. Инструменты Разметки, чтобы узнать, как использовать эти инструменты. Как только вы закончите разметку изображений, щелкните Сохранить , чтобы обновить проект. Появится уведомление о том, что прогресс будет сохранен и доступен для просмотра после повторного открытия проекта.
Статус проекта
Когда проект открывается в виде канвы, отражается предыдущее состояние, в котором он был сохранен. Это включает в себя:
- Экстенты изображений
- Фокус изображения
- Слой изображений
- Состояние канвы
- Выбранные изображения
Добавление слоя наблюдения в проект Excalibur .
Вы можете добавить существующий слой наблюдений в проект Excalibur , чтобы собрать наблюдения из ваших изображений или создать новый слой наблюдений в соответствии с потребностями вашего проекта, используя информацию о проекте. Чтобы добавить слой наблюдений, см. разделы Выбрать существующий слой наблюдений и Создать слой наблюдений.
В этом разделе
- Сохранение проекта
- Сохранение разметки в проекте
- Статус проекта
- Добавление слоя наблюдения в проект Excalibur
Сохранение картинки в качестве!
но картинка сохраняется в плохом качестве. то есть при увеличении она не очень.
К примеру Corel он сохраняет картинку в лучшем качестве, при увеличении все прекрасно видно. Но как я заметил что корел сохраняет в большом разрешении. Подскажите как мне добиться такого же качества экспорта как и в corel?
Вот что у меня получается.
Изменено 2 ноября, 2015 пользователем Roma
Копирование картинки с канвы формы в два Image
Доброго времени суток всем! С наступающим НГ!
Есть такая штука.
Заливаю картинку на канву формы. На форме два Image. При движении сплиттера я заливаю части картинки, которые находятся за Image на сами имаджи.
Суть в том, чтобы сделать Image прозрачными.
Что получилось: Image1 получил «прозрачность», а Image2 стал серым.
Почему так получилось? И как сделать оба имаджа прозрачными?
Код с попытками в комментариях прилагаю.
осторожно, тут код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.Imaging.jpeg, Vcl.StdCtrls; type TForm1 = class(TForm) Image1: TImage; Image2: TImage; Splitter1: TSplitter; OpenDialog1: TOpenDialog; procedure FormShow(Sender: TObject); procedure Splitter1Moved(Sender: TObject); procedure FormPaint(Sender: TObject); private BitMp: TBitMap; aImage: TImage; aCanvas: TCanvas; public end; var Form1: TForm1; implementation procedure TForm1.FormPaint(Sender: TObject); //var // BitMp: TBitMap; begin //BitMp := TBitmap.Create; BitMp.LoadFromFile('C:\Users\Backgrounds\Background.bmp'); Form1.Canvas.StretchDraw(Rect(0, 0, Form1.Width, Form1.Height), BitMp); //BitMp.Free; end; procedure TForm1.FormShow(Sender: TObject); begin BitMp := TBitmap.Create; end; procedure TForm1.Splitter1Moved(Sender: TObject); var mrect1, mrect2: TRect; begin /mrect1 := Rect(Image2.Left, Image2.Top, Image2.Left + Image2.Width, Image2.Top + Image2.Height); BitMp.Canvas.CopyRect(Image1.ClientRect, aImage.Picture.Bitmap.Canvas, Image1.ClientRect); Image1.Picture.Bitmap.Assign(BitMp); BitMp.Canvas.CopyRect(Image2.ClientRect, aImage.Picture.Bitmap.Canvas, Image2.ClientRect); Image2.Picture.Bitmap.Assign(BitMp);> Image1.Picture.Bitmap.Canvas.CopyRect(Image1.ClientRect, Form1.Canvas, Image1.ClientRect); //FormPaint(nil); Image2.Picture.Bitmap.Canvas.CopyRect(Image2.ClientRect, Form1.Canvas, Image2.ClientRect); //BitBlt(Image1.Canvas.Handle, 0, 0, Image1.Width, Image1.Height, BitMp.Canvas.Handle, 0, 0, SRCCOPY); end; end.