Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2016.08.07;
Скачать: CL | DM;

Вниз

Наложение полупрозрачной картинки   Найти похожие ветки 

 
mein ©   (2014-12-08 22:39) [0]

Хочу наложить полупрозрачный битмап на image, но что то не получается, что делаю не так?
Bitmap2:=TBitmap.Create;
Bitmap2.Width:=250;
Bitmap2.Height:=250;
Bitmap2.LoadFromFile("gipsokarton/1.bmp");

bf.BlendOp:=AC_SRC_OVER;
bf.BlendFlags:=0;
bf.AlphaFormat:=AC_SRC_ALPHA;
bf.SourceConstantAlpha:=255;
Windows.AlphaBlend(image1.Canvas.Handle, 0, 0, image1.Width, image1.Height, Bitmap2.Canvas.Handle, 0, 0, Bitmap2.Width, Bitmap2.Height, bf);


 
MBo ©   (2014-12-09 08:28) [1]

А у битмапа имеется альфаканал, чтобы можно было AC_SRC_ALPHA и попиксельно-разную прозрачность использовать?


 
mein ©   (2014-12-09 08:42) [2]

> MBo ©   (09.12.14 08:28) [1]
Битмап обычный - Bitmap2: TBitmap;
Поставил Bitmap2.LoadFromFile("gipsokarton/4.png"); вообще стало писать что невалидный файл.


 
MBo ©   (2014-12-09 09:07) [3]

Битмапы могут иметь разный формат.
Альфаканал может присутствовать только в битмапе формата pf32bit.

На всякий случай - пример смешивания двух битмапов. Прозрачность НЕ попиксельная, а одна для всей картинки.
var
 bm1, bm2: TBitmap;
 bf: TBlendFunction;
 Alpha: Byte;
begin
 bm1 := TBitmap.Create;
 bm1.Width := 200;
 bm1.Height := 200;
 bm1.PixelFormat := pf32bit;
 bm2 := TBitmap.Create;
 bm2.Assign(bm1);
 bm1.Canvas.Brush.Color := clRed;
 bm1.Canvas.FillRect(Rect(0, 0, 150, 150));
 bm2.Canvas.Brush.Color := clBlue;
 bm2.Canvas.FillRect(Rect(50, 50, 200, 200));

 Alpha := 128;
 bf.BlendOp := AC_SRC_OVER;
 bf.BlendFlags := 0;
 bf.SourceConstantAlpha := Alpha;
 bf.AlphaFormat := 0;// AC_SRC_ALPHA;
 WinApi.Windows.AlphaBlend(bm1.Canvas.Handle, 0, 0, bm1.Width, bm1.Height,
   bm2.canvas.handle, 0, 0, bm2.Width, bm2.Height, bf);
 Canvas.Draw(0, 0, bm1);


 
Endy   (2014-12-12 11:03) [4]

Иначе или конвертируйте ваш "4.png" в "1.bmp" с альфаканалом, или грузите через TPNGObject.


 
mein ©   (2014-12-12 18:51) [5]

Да, причина была в альфа канале png. Поставил плагин на paint.net, написал - Bitmap2.LoadFromFile("gipsokarton/4.bmp"); и всё заработало.



Страницы: 1 вся ветка

Текущий архив: 2016.08.07;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.003 c
2-1417713989
Max
2014-12-04 20:26
2016.08.07
Не создаются цвета(WinApi)


2-1418116224
ListViewColumnHeader
2014-12-09 12:10
2016.08.07
Как программно кликнуть по заголовку одной из колонок ListView?


2-1418067581
mein
2014-12-08 22:39
2016.08.07
Наложение полупрозрачной картинки