Пятница, 17.05.2024
Королевство Delphi
Главное меню
Статьи
Наш опрос
Как часто ви на этот сайт заходите?
Всего ответов: 159
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Графика » Разные

Конвертируем битмап в иконку (ico)

Вам необходимо создать два битмапа, битмап маски (назовём его "AND" bitmap) и битмап изображения (назовём его XOR bitmap). Вы можете пропустить обработчики для "AND" и "XOR" битмапов в Windows API функции CreateIconIndirect() и использовать обработчик возвращённой иконки в Вашем приложении.

Пример:

procedure TForm1.Button1Click(Sender: TObject); 
var 
 IconSizeX : integer; 
 IconSizeY : integer; 
 AndMask : TBitmap; 
 XOrMask : TBitmap; 
 IconInfo : TIconInfo; 
 Icon : TIcon; 
begin 
{Получаем размер иконки} 
 IconSizeX := GetSystemMetrics(SM_CXICON); 
 IconSizeY := GetSystemMetrics(SM_CYICON); 

{Создаём маску "And"} 
 AndMask := TBitmap.Create; 
 AndMask.Monochrome := true; 
 AndMask.Width := IconSizeX; 
 AndMask.Height := IconSizeY; 

{Рисуем на маске "And"} 
 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); 

{Рисуем для теста} 
 Form1.Canvas.Draw(IconSizeX * 2, IconSizeY, AndMask); 

{Создаём маску "XOr"} 
 XOrMask := TBitmap.Create; 
 XOrMask.Width := IconSizeX; 
 XOrMask.Height := IconSizeY; 

{Рисуем на маске "XOr"} 
 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); 

{Рисуем в качестве теста} 
 Form1.Canvas.Draw(IconSizeX * 4, IconSizeY, XOrMask); 

{Создаём иконку} 
 Icon := TIcon.Create; 
 IconInfo.fIcon := true; 
 IconInfo.xHotspot := 0; 
 IconInfo.yHotspot := 0; 
 IconInfo.hbmMask := AndMask.Handle; 
 IconInfo.hbmColor := XOrMask.Handle; 
 Icon.Handle := CreateIconIndirect(IconInfo); 

{Уничтожаем временные битмапы} 
 AndMask.Free; 
 XOrMask.Free; 

{Рисуем в качестве теста} 
 Form1.Canvas.Draw(IconSizeX * 6, IconSizeY, Icon); 

{Объявляем иконку в качестве иконки приложения} 
 Application.Icon := Icon; 

{генерируем перерисовку} 
 InvalidateRect(Application.Handle, nil, true); 

{Освобождаем иконку} 
 Icon.Free; 
end;

Получить ссылку на материал

Категория: Разные | Добавил: Барон (13.12.2011)
Просмотров: 967 | Теги: ico, иконка, битмап | Рейтинг: 0.0/0
[ Пожертвования для сайта ] [ Пожаловаться на материал ]

Если вам помог материал сайта кликните по оплаченной рекламе размещенной в центре

Поиск
Категории раздела
DirectX [17]
OpenGL [2]
Игры [15]
Разные [28]
Королевство Delphi © 2010-2024
Яндекс цитирования