Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz

16.04.2010, 19:38
|
|
Участник форума
Регистрация: 04.06.2009
Сообщений: 176
Провел на форуме: 840493
Репутация:
0
|
|
Водяные знаки. Delphi
Здравствуйте. Появтлась необходимость накладывать в своей проге водяной знак на картинку(JPG). Водяной знак также представляет из себя обычную картинку. Собственно исходник по наложению картинки на картинку Я нашел. Но там 1-ая картинка полностью накладывается на вторую(ну только с прозрачностью), а Мне нужно на определенный участок первой картинки. Вот код
Код:
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;
Помогите пожалуйста 
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|