Главная страница
    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.45 MB
Время: 0.026 c
4-1091016954
Катя
2004-07-28 16:15
2004.09.12
Снять с файла атрибут


1-1093523439
MetalFan
2004-08-26 16:30
2004.09.12
хук WH_KEYBOARD_LL


1-1093502344
*Pavel
2004-08-26 10:39
2004.09.12
Скрипты


1-1093695471
Don
2004-08-28 16:17
2004.09.12
Реестер


11-1079333601
M5
2004-03-15 09:53
2004.09.12
Как работать со списками List и StrListEx?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский