怎样取出放入Imagelist控件中的图标

antony521 2014-02-26 07:28:18
怎样取出放入Imagelist控件中的图标。原图标文件丢失。
...全文
464 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
直接保存就行了 ,干嘛那么费事
antony521 2014-03-01
  • 打赏
  • 举报
回复
用夜猫版主的方法完美解决。多谢夜猫了,这种小众问题让您费不少心吧!
十豆三 2014-02-28
  • 打赏
  • 举报
回复
试了一下,Imagelist控件中的图标并没有做为EXE的资源进行编译,所以不能用我说的方法。
都市夜猫 2014-02-28
  • 打赏
  • 举报
回复
引用 3 楼 antony521 的回复:
夜猫版主,用win32api 怎样取出图标,一点都不会呀.

这个可以用 gdiplus 搞掂
在你存有 ImageList 的表单上加一个按钮,按钮 click 事件中贴入下列代码:
* -- 根据你的 ImageList 对象更改下面这行
m.oIml = Thisform.iml1

Declare Long GdiplusStartup In GDIPlus Long @, String @, Long @
Declare Long GdiplusShutdown In GDIPlus Long
Declare Long GdipCreateBitmapFromHICON In GDIPlus Long, Long @
Declare Long GdipSaveImageToFile In GDIPlus Long, String, String, Long
Declare Long GdipDisposeImage In GDIPlus Long

m.hTk = 0
m.nBuf = 0h01 + Replicate(Chr(0),15)
If 0 != GdiplusStartup(@m.hTk, @m.nBuf, 0)
Messagebox('初始化 gdiplus 失败。', 16, '')
Return
Endif

Clear
m.cEnc = 0h06F47C55041AD3119A730000F81EF32E
For m.ii = 1 To m.oIml.ListImages.Count
m.hBmp = 0
If 0 == GdipCreateBitmapFromHICON(m.oIml.ListImages(m.ii).ExtractIcon().Handle, @m.hBmp)
m.cFile = Textmerge('c:\提取的图标<<m.ii>>.png')
If 0 == GdipSaveImageToFile(m.hBmp, Strconv(m.cFile+Chr(0),5),m.cEnc,0)
? Textmerge('已保存图标 <<m.ii>> 到 <<m.cFile>>')
Else
? Textmerge('!!! 保存图标 <<m.ii>> 失败。')
Endif
GdipDisposeImage(m.hBmp)
Else
? '---- !!! 创建位图对象失败.'
Endif
Endfor
GdiplusShutdown(m.hTk)

运行表单,点新加的按钮,然后到 c: 根目录上查看结果
如果是 Win7 以上系统,可能不允许直接保存文件到根目录,自己改一下 m.cFile = ... 这一行
十豆三 2014-02-27
  • 打赏
  • 举报
回复
试试:找到已经编译的EXE,然后提取EXE中的图片。 <提取可执行文件中图标> http://blog.csdn.net/dkfdtf/article/details/5678990
antony521 2014-02-27
  • 打赏
  • 举报
回复
夜猫版主,用win32api 怎样取出图标,一点都不会呀.
都市夜猫 2014-02-27
  • 打赏
  • 举报
回复
提取 exe 中图标和提取 imagelist 中图标不是一回事 这个控件本身已提供了 ExtractIcon 方法来提取图标对象 如果其中存放的是 16 色的图标,vfp 的 SavePicture 就可以用来保存图标文件 SavePicture(Thisform.imagelist1.ListImages(1).ExtractIcon(), 'c:\1.ico') 如果是 256 色及以上的图标, 则 SavePicture 无法完整保留颜色信息,需要直接用 win32api 来达到目的

2,748

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧