Форум: "WinAPI";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];
ВнизСкины Найти похожие ветки
← →
#Мастер# (2004-10-12 18:24) [0]Как создать программу, которая поддерживает скины в любой ОС? Какие есть хорошие компоненты VCL или ActiveX? Или как можно самому организовать поддержку скинов, причём все картинки окна должны быть собраны в одном файле. Спасибо!!! Всех ответивших мне не забуду...
← →
Kolan © (2004-10-13 10:14) [1]
> Или как можно самому организовать поддержку скинов
Можно используя регионы. (Наверно даже нужно)
← →
Дмитрий Ботвин (2004-10-13 10:21) [2]Совершенно верно, через регионы проще всего. Правда шибко красивых скинов регионами не сделаешь, но поработать над этим
стоит....
← →
Nick Denry © (2004-10-13 16:47) [3]Правда шибко красивых скинов регионами не сделаешь..
Сделаешь, если постараться... :)
← →
#Мастер# (2004-10-13 21:06) [4]Поподробнее товарищи!!!
← →
Nick Denry © (2004-10-14 00:11) [5]
{ïðåîáðàçîâàíèå áèòìàïà â ðåãèîí}
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...
← →
tesseract (2004-10-14 12:57) [6]Пять баллов за вопрос!!!!! Особенно VCL и ActiveX в любой ОС!!!!! Сама DELPHI только 2 Оси поддерживает, через CLX а не VCL. А уж ActiveX полная прерогатива Винды......
← →
Nick Denry © (2004-10-14 19:34) [7]tesseract (14.10.04 12:57) [6]
Внимательно надо читать:
Скины [D7, Win95/98, WinME, NT4, Win2k, WinXP]
:)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.034 c