Показать сообщение отдельно
  #2  
Старый 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;
Ответить с цитированием