Код на языке Delphi, который копирует содержимое контрола TPaintBox в системный буфер обмена в виде изображения.
Обзор кода:
Определяется переменная типа TRectpbRect и устанавливается в прямоугольник, покрывающий всю область PaintBox1.
Создается объект типа TBitMap, называемый Bitmap.
Пытается:
Установить ширину и высоту битмапа в соответствие с размерами области PaintBox1.
Копировать содержимое канваса области PaintBox1 (т.е., изображение) в битмап с помощью метода CopyRect, указывая прямоугольник источника (pbRect) и прямоугольник назначения (pbRect) также. Это эффективно копирует всю картинку из области paint box в битмап.
Присваивает битмап системному буферу обмена с помощью метода Assign объекта Clipboard.
Наконец, освобождается объект Bitmap, чтобы предотвратить утечки памяти.
Код использует блок try-finally для обеспечения того, что битмап будет освобожден даже если возникнет исключение при выполнении кода.
Альтернативное решение:
Вместо создания временного битмапа и копирования изображения в него можно использовать метод PaintBox1. Canvas.CopyFromScreen для прямого копирования изображения из канваса области paint box в буфер обмена. Вот как это можно сделать:
var
pbRect: TRect;
begin
pbRect := Rect(0, 0, PaintBox1.Width, PaintBox1.Height);
Clipboard.Assign(PaintBox1.Canvas.CopyFromScreen(pbRect.Left, pbRect.Top, pbRect.Right, pbRect.Bottom));
end;
Эта APPROACH более эффективна и компактна, чем создание временного битмапа. Однако она требует Delphi 2009 или позднее, потому что метод CopyFromScreen был введен в этом версии.
Код на Delphi позволяет скопировать содержимое TPaintBox в буфер обмена для последующего вставки в другие приложения.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.