Иногда бывает необходимо объеденить два (и более) изображений в одно, но с учетом прозрачности. Конечно, для этого можно использовать маски, регионы и т.д., но зачем, если есть возможность использовать GDI? Вот простой способ:
var
lBmpBack, lBmpTop: TBitmap;
lBlend: TBlendFunction;
begin
lBmpBack := TBitmap.Create;
lBmpTop := TBitmap.Create;
try
// Загружаем фоновое изображение
lBmpBack.LoadFromFile('demo.bmp');
lBmpBack.PixelFormat := pf32bit;// Загружаем изображение, которое будем накладывать
lBmpTop.LoadFromFile('delphist.bmp');
lBmpTop.PixelFormat := pf32bit;// Устанавливаем параметры наложения
lBlend.BlendOp := AC_SRC_OVER;
lBlend.BlendFlags := 0;
lBlend.SourceConstantAlpha := 170;
lBlend.AlphaFormat := AC_SRC_ALPHA;// Накладываем
if Windows.AlphaBlend(lBmpBack.Canvas.Handle, // Исходное изображение
(lBmpBack.Width - lBmpTop.Width) div 2,
(lBmpBack.Height - lBmpTop.Height) div 2,
lBmpTop.Width,
lBmpTop.Height,
lBmpTop.Canvas.Handle, // Накладываемое изображение
0,
0,
lBmpTop.Width,
lBmpTop.Height,
lBlend) then
Image1.Picture.Assign(lBmpBack)else
ShowMessage('Ошибка. Не удалось наложить изображение.');
finally
lBmpTop.Free;
lBmpBack.Free;
end;
end;П. С. Последние и самые резонансные новости, которые произошли во Львове и Львовской областе, в которую входит Миколаївський район, Вы можете узнать посетив информационный ресурс mykolaiv.info. А на ваши вопросы всегда готовы быстро и информативно ответить активные пользователи форума.
+0