我有一个 WPF 应用程序,我在项目资源中添加了许多图标和位图。
现在我可以像这样访问它们:
Dim ico As System.Drawing.Icon = My.Resources.Icon 'Icon.ico
Dim img As System.Drawing.Bitmap = My.Resources.Image 'Image.png
为了在 wpf 中使用它,我创建了将它们转换为 ImageSource 类型的过于简单的扩展方法:
'...Imports System.Drawing
'...Imports System.Windows.Interop.Imaging
<Extension()> _
Public Function ToImageSource(ByVal icon As Icon) As BitmapSource
Return CreateBitmapSourceFromHIcon(icon.Handle, Int32Rect.Empty, _
BitmapSizeOptions.FromEmptyOptions)
End Function
<Extension()> _
Public Function ToImageSource(ByVal image As Bitmap) As BitmapSource
Return CreateBitmapSourceFromHBitmap(image.GetHbitmap(), IntPtr.Zero, _
Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions)
End Function
所以我可以这样使用它:
Dim i As New Image With {.Source = My.Resources.Image.ToImageSource}
看一下 MyWpfExtensions.vb,我发现很少有 Microsoft 基础设施允许非官方编码,这是我向各位专家提出的问题。
我想为 System.Drawing.Bitmap/Icon 类型的每个资源提供一个附加(或覆盖)属性,该属性通过 ex 返回图像。方法,所以我不必在 Xaml 中使用转换器,而是直接使用它。
我实际上正在寻找类似 Microsoft.VisualBasic.MyGroupCollectionAttribute 的东西。
有任何想法吗?...