Текущий архив: 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.47 MB
Время: 0.027 c