Карта сайтаСсылкиКонтакты

Хостинг


Использование BitBlt и StretchBlt

PDF Печать
Статьи

Две функции, которые очень важны для работы с изображениями – это BitBlt и StretchBlt. Обе они служат для копирования растровых изображений, а при помощи функции 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;

Результат работы приложения

Применение функции StretchBlt и SRCINVERT

Для начала загрузите растровое изображение в Image1.


 

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


Защитный код
Обновить