首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delphi7 TImage和TImageList

Delphi7 TImage和TImageList
EN

Stack Overflow用户
提问于 2010-11-29 22:33:57
回答 1查看 2.7K关注 0票数 3

设i为整型私有

代码

代码语言:javascript
复制
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;

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-29 22:49:16

代码语言:javascript
复制
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和本机Windows API之间的合作程度有点不清楚。如果上面的代码不能工作(我感觉它正在泄漏图标),这里有一个纯原生方法(uses ImgList, CommCtrl):

代码语言:javascript
复制
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;
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4304723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档