Использование BitBlt и StretchBlt
Это две Windows API функции, а это значит, что в качестве параметра нужно передавать дескриптор холста. В Delphi, однако, есть аналогичные функции - TCanvas.CopyRect и TCanvas.StretchDraw. Однако, они работают намного медленнее, чем аналогичные API функции.
В конце списка передаваемых параметров передается так называемый код операции. Он определяет, как передаваемые пиксели, а также пиксели, которые находятся на холсте, будут связаны между собой. Например, SRCCOPY обеспечивает нормальное копирование, SRCINVERT конвертирует пиксели источника и приемника при помощи операнда ИЛИ, SRCAND связывает пиксели при помощи операнда И.
Пример использования
Следующий пример выводит на холст формы изображение, которое загружено в TImage Image1.Изображение будет негативным по отношению к начальному изображению, а также изменено по размеру.
procedure TForm1.Button1Click(Sender: TObject); begin SetStretchBltMode(Canvas.Handle, HALFTONE); StretchBlt(Canvas.Handle, 10, 10, 100, 100, Image1.Canvas.Handle, 0, 0, Image1.Width, Image1.Height, SRCINVERT); end;
Результат работы приложения
Для начала загрузите растровое изображение в Image1.
Комментарии