我正在尝试将Bitmap (SystemIcons.Question)转换为BitmapImage,以便可以在WPF Image控件中使用它。
我使用以下方法将其转换为BitmapSource,但它返回了一个InteropBitmapImage,现在的问题是如何将其转换为BitmapImage。直接强制转换似乎不起作用。
有人知道怎么做吗?
代码:
public BitmapSource ConvertToBitmapSource()
{
int width = SystemIcons.Question.Width;
int height = SystemIcons.Question.Height;
object a = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(SystemIcons.Question.ToBitmap().GetHbitmap(), IntPtr.Zero, System.Windows.Int32Rect.Empty, BitmapSizeOptions.FromWidthAndHeight(width, height));
return (BitmapSource)a;
}返回BitmapImage的属性:(绑定到my Image控件)
public BitmapImage QuestionIcon
{
get
{
return (BitmapImage)ConvertToBitmapSource();
}
}发布于 2010-03-14 21:00:33
InteropBitmapImage继承自ImageSource,因此您可以在Image控件中直接使用它。你不需要它成为一个BitmapImage。
发布于 2010-03-14 07:06:32
您应该能够使用:
public BitmapImage QuestionIcon
{
get
{
using (MemoryStream ms = new MemoryStream())
{
System.Drawing.Bitmap dImg = SystemIcons.ToBitmap();
dImg.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
ms.Position = 0;
System.Windows.Media.Imaging.BitmapImage bImg = new System.Windows.Media.Imaging.BitmapImage();
bImg.BeginInit();
bImg.StreamSource = new MemoryStream(ms.ToArray());
bImg.EndInit();
return bImg;
}
}
}发布于 2017-04-07 16:20:42
public System.Windows.Media.Imaging.BitmapImage QuestionIcon
{
get
{
using (MemoryStream ms = new MemoryStream())
{
System.Drawing.Bitmap dImg = SystemIcons.ToBitmap();
dImg.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
ms.Position = 0;
var bImg = new System.Windows.Media.Imaging.BitmapImage();
bImg.BeginInit();
bImg.StreamSource = ms;
bImg.EndInit();
return bImg;
}
}
}https://stackoverflow.com/questions/2440267
复制相似问题