首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >InteropBitmap到BitmapImage

InteropBitmap到BitmapImage
EN

Stack Overflow用户
提问于 2010-03-14 06:21:45
回答 3查看 10.2K关注 0票数 5

我正在尝试将Bitmap (SystemIcons.Question)转换为BitmapImage,以便可以在WPF Image控件中使用它。

我使用以下方法将其转换为BitmapSource,但它返回了一个InteropBitmapImage,现在的问题是如何将其转换为BitmapImage。直接强制转换似乎不起作用。

有人知道怎么做吗?

代码:

代码语言:javascript
复制
 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控件)

代码语言:javascript
复制
public BitmapImage QuestionIcon
        {
            get
            {
                return  (BitmapImage)ConvertToBitmapSource();
            }
        }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-14 21:00:33

InteropBitmapImage继承自ImageSource,因此您可以在Image控件中直接使用它。你不需要它成为一个BitmapImage

票数 9
EN

Stack Overflow用户

发布于 2010-03-14 07:06:32

您应该能够使用:

代码语言:javascript
复制
    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;
            }
        }
    }
票数 3
EN

Stack Overflow用户

发布于 2017-04-07 16:20:42

代码语言:javascript
复制
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;
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2440267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档