![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как из битмапа создать HICON ? [D4]
Tahion2 © (2004-07-02 16:25:00)Как из битмапа создать HICON ?
GuAV (2004-07-03 00:12:00) [1]
> Все-таки TButton - это класс.
Да согласен был не прав. TButton и TUser - классы :)
TUser (2004-07-02 18:32:00) [2]
> Это экземпляр класса
Все-таки TButton - это класс.
GuAV (2004-07-02 18:12:00) [3]
> Это класс.
Это экземпляр класса, по сути указатель.
Fay (2004-07-02 17:44:00) [4]2GuAV © (02.07.04 17:35) [7]
> В дельфи же TButton - это тоже на самом деле не кнопка,
> а указатель на кнопку :-)
А вот и фигушки! Это класс.
GuAV (2004-07-02 17:35:00) [5]
> Так он вернет хэндел того, что создано из битмапа. А сам
> хэндел из битмапа не создается
IMHO, пора уже отождествлять хендел и объект. В дельфи же TButton - это тоже на самом деле не кнопка, а указатель на кнопку :-)
grom (2004-07-02 17:11:00) [6]здесь много лишнего. надо удалить
grom (2004-07-02 17:09:00) [7]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;
приме
TUser (2004-07-02 17:04:00) [8]Так он вернет хэндел того, что создано из битмапа. А сам хэндел из битмапа не создается, так что 'Никак' было сказано правильно.
GuAV (2004-07-02 17:00:00) [9]
> Никак
Да ну?CreateIconIndirect
TUser (2004-07-02 16:53:00) [10]Никак. Можно 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;
Tahion2 (2004-07-02 16:49:00) [11]Если можно, то приведите пример кода