воскресенье, 8 февраля 2009 г.

Наложение изображений с прозрачностью

Данный код накладывает одно изображение на другое с указанной степенью прозрачности.
Степень прозрачности задаётся от 0 до 255.
var   
bmp1, bmp2: TBitMap;
Blend: TBlendFunction;
begin
bmp1 := TBitMap.Create;
bmp2 := TBitMap.Create;
bmp1.LoadFromFile('C:\1.bmp'); // загружаем 1 битмап
bmp2.LoadFromFile('C:\2.bmp'); // и второй битмап
bmp1.PixelFormat := pf32bit; // переводим оба в 32 бит
bmp2.PixelFormat := pf32bit;
Blend.BlendOp := AC_SRC_OVER;
Blend.BlendFlags := 0;
Blend.SourceConstantAlpha := 128; // прозрачность 50% (0 - 255)
Blend.AlphaFormat := AC_SRC_ALPHA; // либо = 0 (другой алгоритм)
// накладываем битмап 2 на битмап 1. Результат в bmp1
if Windows.AlphaBlend(bmp1.Canvas.Handle, 0, 0, bmp1.Width, bmp1.Height,
bmp2.Canvas.Handle, 0, 0, bmp2.Width, bmp2.Height, Blend) then
Canvas.Draw(0, 0, bmp1) // рисуем результат на форме
else ShowMessage(IntToStr(GetLastError)); // или код ошибки, если наложить не удалось
bmp1.Free; bmp2.Free; // уничтожаем битмапы
end;

Комментариев нет:

Отправить комментарий