Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.01;
Скачать: CL | DM;

Вниз

Преобразование картинок   Найти похожие ветки 

 
Volkodav ©   (2006-03-10 21:08) [0]

Уважаемые мастера, пожалуйста подскажите как преобразовать bmp например : c:\bitmap1.bmp в ico !


 
Усамо Бен Ладен   (2006-03-10 22:52) [1]

наверно так
function Bitmap2Icon(Icon: TIcon): TBitmap;
begin
 with TImageList.Create(nil) do
 begin
   Add(Icon);
   Result := TBitmap.Create;
   GetIcon(0, Result);
   Free;
 end;
end;


 
Volkodav ©   (2006-03-11 09:34) [2]

Почему-то не работает !


 
Handle   (2006-03-11 10:38) [3]

Нужно создать два 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 World © Выпуск 2002 - 2004


 
Handle   (2006-03-11 10:40) [4]

http://delphiworld.narod.ru/_all_articles_.html



Страницы: 1 вся ветка

Текущий архив: 2006.10.01;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.038 c
3-1152986150
Silver...
2006-07-15 21:55
2006.10.01
DataSet.Locate не дружит с Filter, а надо - как быть


2-1157984741
SamProf
2006-09-11 18:25
2006.10.01
TForm.onShow или как там


2-1157108981
.ruslan
2006-09-01 15:09
2006.10.01
...разделитель без черты


3-1154416485
~SerJant~
2006-08-01 11:14
2006.10.01
Форматирование даты в запросе в FireBird 1.5


1-1155885997
Mechanic
2006-08-18 11:26
2006.10.01
Отрисовка Формы