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

Вниз

Как из битмапа создать HICON ?   Найти похожие ветки 

 
Tahion2   (2004-07-02 16:25) [0]

Как из битмапа создать HICON ?


 
Tahion2   (2004-07-02 16:49) [1]

Если можно, то приведите пример кода


 
TUser ©   (2004-07-02 16:53) [2]

Никак. Можно TIcon, вот пример с DelphiWorld"а

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;


 
GuAV ©   (2004-07-02 17:00) [3]


> Никак

Да ну? CreateIconIndirect


 
TUser ©   (2004-07-02 17:04) [4]

Так он вернет хэндел того, что создано из битмапа. А сам хэндел из битмапа не создается, так что "Никак" было сказано правильно.


 
grom   (2004-07-02 17:09) [5]

procedure TForm1.ShowIcon(Id:Integer;Icon,Hint:string);
var
ics:TIcon;
ims,img:TImage;
iml:TImageList;
begin
ics:=TIcon.Create;
ims:=TImage.Create(Form1);
img:=TImage.Create(Form1);
iml:=TImageList.CreateSize(16,16);

ims.Picture.LoadFromFile(1.bmp);

 ImL.Clear;
 ImL.AddMasked(Ims.Picture.Bitmap,clWhite);
 ImL.GetIcon(0,Ics);
Ics.Handle =иконка хандле
img.Free;
ics.Free;
ims.Free;
iml.Free;
end;
приме


 
grom   (2004-07-02 17:11) [6]

здесь много лишнего. надо удалить


 
GuAV ©   (2004-07-02 17:35) [7]


> Так он вернет хэндел того, что создано из битмапа. А сам
> хэндел из битмапа не создается

IMHO, пора уже отождествлять хендел и объект. В дельфи же TButton - это тоже на самом деле не кнопка, а указатель на кнопку :-)


 
Fay ©   (2004-07-02 17:44) [8]

2GuAV ©   (02.07.04 17:35) [7]

> В дельфи же TButton - это тоже на самом деле не кнопка,
> а указатель на кнопку :-)


А вот и фигушки! Это класс.


 
GuAV ©   (2004-07-02 18:12) [9]


>  Это класс.

Это экземпляр класса, по сути указатель.


 
TUser ©   (2004-07-02 18:32) [10]


> Это экземпляр класса

Все-таки TButton - это класс.


 
GuAV ©   (2004-07-03 00:12) [11]


> Все-таки TButton - это класс.

Да согласен был не прав. TButton и TUser - классы :)



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

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

Наверх




Память: 0.49 MB
Время: 0.044 c
1-1089130421
rolex
2004-07-06 20:13
2004.07.18
Как узнать находится ли курсор на PopupMenu или нет???


1-1089033655
wild_arg
2004-07-05 17:20
2004.07.18
навигация по TXMLDocument


3-1087833532
German
2004-06-21 19:58
2004.07.18
Индексация


4-1086505717
SPeller
2004-06-06 11:08
2004.07.18
Исправить дамп РЕ чтоб запускался


3-1087818091
SergP
2004-06-21 15:41
2004.07.18
Работа с Oracle через dbExpress