gpt4 book ai didi

delphi 7 TImage 和 TImageList

转载 作者:行者123 更新时间:2023-12-03 15:51:07 27 4
gpt4 key购买 nike

让我成为整数私有(private)

代码

procedure TForm1.Image1Click(Sender: TObject);
begin
inc(i);
ImageList1.GetIcon(i mod 4,Image1.Picture.Icon);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
i:=0;
ImageList1.GetIcon(i mod 4,Image1.Picture.Icon);
end;

如何拉伸(stretch)列表中的图标以适合 Image1 的大小?

最佳答案

procedure TForm1.Image1Click(Sender: TObject);
var
icon: TIcon;
begin
inc(i);
Image1.Canvas.FillRect(ClientRect);
icon := TIcon.Create;
try
ImageList1.GetIcon(i mod 4, icon);
DrawIconEx(Image1.Canvas.Handle, 0, 0, icon.Handle, Image1.Width, Image1.Height, 0, 0, DI_NORMAL);
finally
icon.Free;
end
end;

更好的方法

有时使用 Delphi 有点尴尬,因为 VCL 和 native Windows API 之间的合作程度有些不清楚。如果上面的代码不起作用(我感觉它正在泄漏图标),这里有一个纯 native 方法(使用 ImgList、CommCtrl):

procedure TForm1.Image1Click(Sender: TObject);
var
icon: HICON;
begin
inc(i);
Image1.Canvas.FillRect(ClientRect);
icon := ImageList_GetIcon(ImageList1.Handle, i mod 4, ILD_NORMAL);
try
DrawIconEx(Image1.Canvas.Handle, 0, 0, icon, Image1.Width, Image1.Height, 0, 0, DI_NORMAL);
finally
DestroyIcon(icon);
end
end;

关于delphi 7 TImage 和 TImageList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4304723/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com