Форум: "Media";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];
ВнизAero Glass эффект Найти похожие ветки
← →
[dvs]digiman (2005-11-09 23:00) [0]Как можно похожий сабж реализовать (только не в viste):
- полупрозрачный заголовок
- градиентная прозрачность краев окон
- градиентная прозрачность тени окна (обычные виндовые тени от окон не в счет)
В качестве примера скин для winampa --Orion-- (http://www.winamp.com/skins/details.php?id=144161 или http://www.spuler.us/winamp/orion/orion.html)
← →
[dvs]digiman (2005-11-09 23:04) [1]p/s/ прога у меня на winapi без vcl
← →
[dvs]digiman (2005-11-10 02:22) [2]Попробовал сделать прозрачное окно по альфа-каналу битмапа,
но чего-то не выходит с UpdateLayeredWindow...
Кусок кода (только winapi):
---------------------------------------------------------
//...
Var scrDC, wndDC, memDC : HDC;
hbm : HBITMAP;
pptSrc : TPOINT;
pBlend : TBLENDFUNCTION;
//...
If uMsg=WM_PAINT Then BitBlt(wndDC,0,0,Width,Height,memDC,0,0,SRCCOPY);
//...
Wnd := CreateWindowEx(WS_EX_TOPMOST Or WS_EX_TOOLWINDOW Or WS_EX_LAYERED,
ClassName,"abc", WS_POPUP, 100,100,300,110, 0,0,hInstance,Nil);
scrDC := GetDC(0);
wndDC := GetWindowDC(Wnd);
memDC := CreateCompatibleDC(wndDC);
hbm := LoadBitmap(hInstance, "IMG"); // Картинка в ресурсе 300 x 110 x 32
SelectObject(memDC, hbm);
pptSrc.X := 0;
pptSrc.Y := 0;
With pBlend Do Begin
BlendOp := AC_SRC_OVER;
AlphaFormat := AC_SRC_ALPHA;
BlendFlags := 0;
SourceConstantAlpha := 128;
End;
UpdateLayeredWindow(Wnd,scrDC,Nil,Nil,memDC,@pptSrc,RGB(255,0,0),@pBlend,ULW_ALPHA);
//...
---------------------------------------------------------
Если вместо UpdateLayeredWindow использовать например
SetLayeredWindowAttributes(Wnd,0,128,LWA_ALPHA)
то появляется просто прозрачное окно с картинкой
← →
Antonn © (2005-11-10 05:12) [3]во первых, нужен 32 битный битмап.
в вторых, если пользоваться UpdateLayeredWindow, то забыть про SetLayeredWindowAttributes
в третьих, на VCL нужно еще было свойство установить SetWindowLong(H,GWL_EXSTYLE, GetWindowLong(H,GWL_EXSTYLE) or WS_EX_LAYERED).
← →
[dvs]digiman (2005-11-11 14:21) [4]1) у меня битмап 300x110x32 с альфа каналом (подготовлен в шопе)
2) SetLayeredWindowAttributes я не использую
3) Я создаю окно уже со стилем WS_EX_LAYERED
> Wnd := CreateWindowEx(WS_EX_TOPMOST Or WS_EX_TOOLWINDOW
> Or WS_EX_LAYERED, ClassName,"abc",
> WS_POPUP, 100,100,300,110, 0,0,hInstance,Nil);
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.045 c