对于一个用户控件,其中显示了文件路径和一组给定文件的关联文件图标,我们提取这些文件的Icon
并创建ImageSource
个实例供以后使用。
大致是:
FileIcons aIcon = new FileIcons(filePath);
System.Drawing.Icon i = aIcon.GetSmallIconWithTypeName(isFolder, out typeName);
ImageSource imgSource = Imaging.CreateBitmapSourceFromHIcon(i.Handle, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
不相关但仅供参考:FileIcons类使用Shell32.dll的SHGetFileInfo和ExtractIconEx来获取Icon。
有趣的部分是在致电Imaging.CreateBitmapSourceFromHIcon(...)
之后:
我可以安全.Dispose()
Icon
ImageSource
创建了ImageSource
并且之后继续使用{{1}}吗?
感谢您的帮助,
谢
答案 0 :(得分:2)
你可以,位图和图标之间没有链接,前者是一个独立的内存中图像,但不是后者。
不要忘记为DestroyIcon()
调用i
。