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

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.029 c
3-1092503543
Ted
2004-08-14 21:12
2004.09.12
Как можно из DBgrid получить номер выделенной записи


14-1093385067
Gero
2004-08-25 02:04
2004.09.12
32-битных иконки


14-1093002926
Тупой
2004-08-20 15:55
2004.09.12
Где можно скачать книги по Delphi 7",


14-1093377531
lak
2004-08-24 23:58
2004.09.12
никто не слышал что ли?


8-1088146420
0rg
2004-06-25 10:53
2004.09.12
Синхронное проигрывание звука





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