可以在调用 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
。
对于显示一组给定文件的文件路径和相关文件图标的用户控件,我们提取这些文件的 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
。