Как скопировать картинку из канвы
Перейти к содержимому

Как скопировать картинку из канвы

  • автор:

Как скопировать картинку из канвы

Всем доброго времени суток.

Подскажите как можно сохранить изображение с канвы формы в файл.

 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 . Щелкните Сохранить , чтобы сохранить ваш прогресс по просмотренным и проанализированным изображениям. Для сохранения необходимы соответствующие права. Кнопка Сохранить отображается в заголовке панели инструментов в виде канвы, если у вас есть соответствующие права.

Сохранение проекта

Чтобы сохранить свою работу в проекте, выполните следующие шаги:

  1. Щелкните Сохранить на панели инструментов канвы.

Откроется диалоговое окно Создать проект Excalibur .

    Заголовок (Обязательно)
Примечание:

Это имя должно быть уникальным. Если в ваших ресурсах будет обнаружено указанное имя, на портале будет создана новая папка с тем же именем и добавленным словом копия.

Подсказка:

Вы можете выделить свои инструкции, щёлкнув Полужирный или Курсив . Также вы можете создать список, щёлкнув Неупорядоченный список или Нумерованный список .

Дополнительно, вы можете опубликовать проект в группе портала. По умолчанию это Владелец .

Появится загрузчик и вы получите уведомление, как только проект будет успешно создан. Также появится заголовок проекта с отображением внесенных изменений, а на вашем портале будет создана папка проекта.

Примечание:

Для сохранения и обновления проекта необходимо быть его владельцем.

Вы можете продолжать работу над проектом или внести дополнительные изменения на странице Информация о проекте .

Сохранение разметки в проекте

Вы можете сохранить созданную вами разметку как коллекцию объектов, которая хранится в проекте Excalibur . См. Инструменты Разметки, чтобы узнать, как использовать эти инструменты. Как только вы закончите разметку изображений, щелкните Сохранить , чтобы обновить проект. Появится уведомление о том, что прогресс будет сохранен и доступен для просмотра после повторного открытия проекта.

Статус проекта

Когда проект открывается в виде канвы, отражается предыдущее состояние, в котором он был сохранен. Это включает в себя:

  • Экстенты изображений
  • Фокус изображения
  • Слой изображений
  • Состояние канвы
  • Выбранные изображения

Добавление слоя наблюдения в проект Excalibur .

Вы можете добавить существующий слой наблюдений в проект Excalibur , чтобы собрать наблюдения из ваших изображений или создать новый слой наблюдений в соответствии с потребностями вашего проекта, используя информацию о проекте. Чтобы добавить слой наблюдений, см. разделы Выбрать существующий слой наблюдений и Создать слой наблюдений.

В этом разделе
  1. Сохранение проекта
  2. Сохранение разметки в проекте
  3. Статус проекта
  4. Добавление слоя наблюдения в проект Excalibur

Сохранение картинки в качестве!

но картинка сохраняется в плохом качестве. то есть при увеличении она не очень.

К примеру Corel он сохраняет картинку в лучшем качестве, при увеличении все прекрасно видно. Но как я заметил что корел сохраняет в большом разрешении. Подскажите как мне добиться такого же качества экспорта как и в corel?

Вот что у меня получается.

image.png

Изменено 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  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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *