Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.47 MB
Время: 0.048 c
1-1092739951
Inco
2004-08-17 14:52
2004.09.12
Обновление приложения в рантайм.


3-1092375802
REP
2004-08-13 09:43
2004.09.12
Не удается записать в TBlobField произвольный файл


1-1093792168
Mihey_temporary
2004-08-29 19:09
2004.09.12
Проблема с записью в файл значения указателя


14-1093061627
able
2004-08-21 08:13
2004.09.12
Ну вот.. выходные... форум отдыхает :(


3-1092819526
surkis
2004-08-18 12:58
2004.09.12
Access