Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

Видеокурс программиста и крэкера 5D 2O17
(актуальность: декабрь 2O17)
Свежие инструменты, новые видеоуроки!

  • 400+ видеоуроков
  • 800 инструментов
  • 100+ свежих книг и статей

УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Как создать 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;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS