Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2016.08.07;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.001 c
2-1418116224
ListViewColumnHeader
2014-12-09 12:10
2016.08.07
Как программно кликнуть по заголовку одной из колонок ListView?


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


2-1417713989
Max
2014-12-04 20:26
2016.08.07
Не создаются цвета(WinApi)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский