Текущий архив: 2004.09.12;
Скачать: 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 вся ветка
Текущий архив: 2004.09.12;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.026 c