Вниз
Скачать: CL | DM;

Transparent BITMAP   Найти похожие ветки 

← →
юзверь   (2004-07-25 20:46) [0]

подскажите плиз как заставиль BMPши просвечиваться, шоб розового небыло, как подставить цвет шоб оно прозрачность дуплило?
картинки находяться на кнопках на тулбаре

..
toolbarHWND := CreateWindowEx(0, TOOLBARCLASSNAME, nil,
WS_CHILD or WS_VISIBLE or TBSTYLE_TRANSPARENT or TBSTYLE_FLAT or TBSTYLE_TOOLTIPS or CCS_NODIVIDER or CCS_ADJUSTABLE or CCS_NOPARENTALIGN or CCS_NORESIZE,
0, 0, 0, 0, barhWnd, 0, hInstance, nil);
..
tbab.hInst := 0;
tbab.nID   := loadbitmap(hInstance, "BITMAP_24");
SendMessage(toolbarHWND, TB_ADDBITMAP, wParam(4), lParam(@tbab));


← →
parovoZZ ©   (2004-07-25 21:44) [1]

Я делал так:


procedure DrawOnScreen (PictureDC : HDC; Width, Height : Integer);
var
DC, Alpha_DC, Mask_DC     : HDC;
XScreen, YScreen          : Integer; //
Alpha_Bitmap, Mask_Bitmap : HBitmap;
Transparent               : Cardinal; //
bf                        : BlendFunction;

begin
   DC := GetDC (0); //
   Randomize;
   XScreen := Random (GetSystemMetrics (SM_CXSCREEN)) - Trunc (Width/2);//
   YScreen := Random (GetSystemMetrics (SM_CYSCREEN)) - Trunc (Height/2);//êóäà áóäåì ðèñîâàòü êàðòèíêó
   Transparent := GetPixel (PictureDC, 0, 0);//Определяем прозрачный увет

   Alpha_DC := CreateCompatibleDC (DC);
   Mask_DC := CreateCompatibleDC (DC);

   Alpha_Bitmap := CreateCompatibleBitmap (DC, Width, Height);
   Mask_Bitmap := CreateBitmap (Width, Height, 1, 1, nil);

   SelectObject (Alpha_DC, Alpha_Bitmap);
   SelectObject (Mask_DC, Mask_Bitmap);

   BitBlt (Alpha_DC, 0, 0, Width, Height, DC, XScreen, YScreen, SRCCOPY);

   bf.AlphaFormat := 0;
   bf.BlendFlags := 0;
   bf.BlendOp := AC_SRC_OVER;
   bf.SourceConstantAlpha := Random (250);//Уровень прозрачности
   AlphaBlend (Alpha_DC, 0, 0, Width, Height, PictureDC, 0, 0, Width, Height, bf);

   SetBkColor (PictureDC, transparent);

   BitBlt (Mask_DC, 0, 0, Width, Height, PictureDC, 0, 0, SRCCOPY);
   BitBlt (Alpha_DC, 0, 0, Width, Height, Mask_DC, 0, 0, SRCPAINT);

   TransparentBlt (DC, XScreen, YScreen, Width, Height, Alpha_DC, 0, 0, Width, Height, $00FFFFFF);

   DeleteObject (Alpha_Bitmap);
   DeleteObject (Mask_Bitmap);

   DeleteDC (Alpha_DC);
   DeleteDC (Mask_DC);

   ReleaseDC (0, DC);
end;


Сперва создаём чёрно-белую картинку, затем на неё копируем цветную. Причём цвет, установленный SetBkColor, становится белым, а всё остальное чёрным. По этой маске TransparentBlt (в 98-ой говорят не работает...проверял...всё пашает. Почему-тА) отсекает ненужный нам фон, а AlphaBlend делает её полупрозрачной.


← →
юзверь   (2004-07-25 22:29) [2]

10х
попробую, мне наверно полегче надо, просто шоб орубало лишнее а не полу прозрачным, я уже пробовал с TransparentBlt но шото у мя криво торчит наверно :)



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.023 c
1-1093886760
Lord de Mon
2004-08-30 21:26
2004.09.12
Разделение строки


14-1093190802
stef
2004-08-22 20:06
2004.09.12
Создание файлов большого размера


14-1093194968
Nelud
2004-08-22 21:16
2004.09.12
Общага.


1-1092557425
Игорь1
2004-08-15 12:10
2004.09.12
begin...end


10-1036487305
Demon[DZ]
2002-11-05 12:08
2004.09.12
RemoteDataModule!




   Наверх