![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Скины [D7, Win95/98, WinME, NT4, Win2k, WinXP]
#Мастер# © (2004-10-12 18:24:00)Как создать программу, которая поддерживает скины в любой ОС? Какие есть хорошие компоненты VCL или ActiveX? Или как можно самому организовать поддержку скинов, причём все картинки окна должны быть собраны в одном файле. Спасибо!!! Всех ответивших мне не забуду...
Nick Denry (2004-10-14 19:34:00) [1]tesseract (14.10.04 12:57) [6]
Внимательно надо читать:
Скины [D7, Win95/98, WinME, NT4, Win2k, WinXP]
:)
tesseract (2004-10-14 12:57:00) [2]Пять баллов за вопрос!!!!! Особенно VCL и ActiveX в любой ОС!!!!! Сама DELPHI только 2 Оси поддерживает, через CLX а не VCL. А уж ActiveX полная прерогатива Винды......
Nick Denry (2004-10-14 00:11:00) [3]
{ïðåîáðàçîâàíèå áèòìàïà â ðåãèîí}
function BitmapToRegion(hmap: HBitmap; TransColor: Cardinal): HRGN;
var
XStart: Integer;
X, Y: Integer;
hd : HDC;
res : THandle;
dime: TSize;
t_rgn:HRGN;
begin
Result:=0;
hd := CreateCompatibleDC( 0 );
res:= SelectObject(hd, hmap);
if res = 0 then
begin
{$IFDEF mes_error} ShowMessage(error_reate_rgn);{$ENDIF}
Exit;
end
else
begin
dime:=bitmap_size(hmap);
Result := 0;
for Y := 0 to dime.cy - 1 do
begin
X := 0;
while X < dime.cx do
begin
while (X < dime.cx) and (Windows.GetPixel(hd,x,y) = TransColor) do
Inc(X);
if X = dime.cx then
Break;
XStart := X;
while (X < dime.cx) and (Windows.GetPixel(hd,x,y) < TransColor) do
Inc(X);
if Result = 0 then
Result := CreateRectRgn(XStart, Y, X, Y + 1)
else begin
t_rgn:= CreateRectRgn(XStart, Y, X, Y + 1);
CombineRgn(Result, Result, t_rgn, RGN_OR);
DeleteObject(t_rgn);
end;
end;
end;
end;
SelectObject(hd, res);
DeleteDC(hd);
end;
Главное, чтобы прозрачный цветбыл в каждой точке одинаковый, т.е., если это 255,255,255 - то должен быть везде 255, 255, 255, а не 255,254, 254...
#Мастер# (2004-10-13 21:06:00) [4]Поподробнее товарищи!!!
Nick Denry (2004-10-13 16:47:00) [5]Правда шибко красивых скинов регионами не сделаешь..
Сделаешь, если постараться... :)
Дмитрий Ботвин (2004-10-13 10:21:00) [6]Совершенно верно, через регионы проще всего. Правда шибко красивых скинов регионами не сделаешь, но поработать над этим
стоит....
Kolan (2004-10-13 10:14:00) [7]
> Или как можно самому организовать поддержку скинов
Можно используя регионы. (Наверно даже нужно)