Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.28;
Скачать: CL | DM;

Вниз

Скины   Найти похожие ветки 

 
#Мастер#   (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 вся ветка

Текущий архив: 2004.11.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.034 c
3-1099281637
sanek
2004-11-01 07:00
2004.11.28
как создать вычисляемое поле через DBGRId


3-1098110205
SH
2004-10-18 18:36
2004.11.28
DBListBox не отображает данные


1-1100392990
ZZS
2004-11-14 03:43
2004.11.28
Как правильно завершить программу?


1-1100517283
den_777
2004-11-15 14:14
2004.11.28
Ограничение RICHEDIT на длину текста


14-1100070632
Суслик
2004-11-10 10:10
2004.11.28
service pack