可以在调用 Imaging.CreateBitmapSourceFromHIcon 后安全地处理图标吗?

Can the Icon be disposed safely after a call to Imaging.CreateBitmapSourceFromHIcon?

对于显示一组给定文件的文件路径和相关文件图标的用户控件,我们提取这些文件的 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 class 使用 Shell32.dll 的 SHGetFileInfo 和 ExtractIconEx 获取图标。

有趣的部分是在调用 Imaging.CreateBitmapSourceFromHIcon(...) 之后:

我可以安全地 .Dispose() Icon 创建 ImageSource 并且之后继续使用 ImageSource 吗?

感谢您的帮助,

弗兰克

可以,位图和图标之间没有link,前者是从后者派生的独立内存图像,但不是linked 到后者。

别忘了 p/invoke DestroyIcon() i