Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.11.2008, 14:38
Rat Rat вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 391
Репутация: 6078
По умолчанию

В общем пример не рабочий...

Вот на просторах инета нарыл функцию для создания иконки:
Как создать ICO из BMP
Нужно создать два bitmap'а: bitmap-маску ("AND" bitmap) и bitmap-картинку (XOR bitmap). Потом передать дескрипторы "AND" и "XOR" bitmap-ов API функции CreateIconIndirect():
Код:
 procedure TForm1.Button1Click(Sender: TObject);
 var
   IconSizeX: integer;
   IconSizeY: integer;
   AndMask: TBitmap;
   XOrMask: TBitmap;
   IconInfo: TIconInfo;
   Icon: TIcon;
 begin
   {Get the icon size}
   IconSizeX := GetSystemMetrics(SM_CXICON);
   IconSizeY := GetSystemMetrics(SM_CYICON);
   {Create the "And" mask}
   AndMask := TBitmap.Create;
   AndMask.Monochrome := true;
   AndMask.Width := IconSizeX;
   AndMask.Height := IconSizeY;
   {Draw on the "And" mask}
   AndMask.Canvas.Brush.Color := clWhite;
   AndMask.Canvas.FillRect(Rect(0, 0, IconSizeX, IconSizeY));
   AndMask.Canvas.Brush.Color := clBlack;
   AndMask.Canvas.Ellipse(4, 4, IconSizeX - 4, IconSizeY - 4);
   {Draw as a test}
   Form1.Canvas.Draw(IconSizeX * 2, IconSizeY, AndMask);
   {Create the "XOr" mask}
   XOrMask := TBitmap.Create;
   XOrMask.Width := IconSizeX;
   XOrMask.Height := IconSizeY;
   {Draw on the "XOr" mask}
   XOrMask.Canvas.Brush.Color := ClBlack;
   XOrMask.Canvas.FillRect(Rect(0, 0, IconSizeX, IconSizeY));
   XOrMask.Canvas.Pen.Color := clRed;
   XOrMask.Canvas.Brush.Color := clRed;
   XOrMask.Canvas.Ellipse(4, 4, IconSizeX - 4, IconSizeY - 4);
   {Draw as a test}
   Form1.Canvas.Draw(IconSizeX * 4, IconSizeY, XOrMask);
   {Create a icon}
   Icon := TIcon.Create;
   IconInfo.fIcon := true;
   IconInfo.xHotspot := 0;
   IconInfo.yHotspot := 0;
   IconInfo.hbmMask := AndMask.Handle;
   IconInfo.hbmColor := XOrMask.Handle;
   Icon.Handle := CreateIconIndirect(IconInfo);
   {Destroy the temporary bitmaps}
   AndMask.Free;
   XOrMask.Free;
   {Draw as a test}
   Form1.Canvas.Draw(IconSizeX * 6, IconSizeY, Icon);
   {Assign the application icon}
   Application.Icon := Icon;
   {Force a repaint}
   InvalidateRect(Application.Handle, nil, true);
   {Free the icon}
   Icon.Free;
 end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:21.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025