Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Скины [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]


> Или как можно самому организовать поддержку скинов

Можно используя регионы. (Наверно даже нужно)


Наверх

Титульная страница Поиск, карта сайта Написать письмо