@Avery007

Как отобразить System.Drawing.Bitmap в Image?

Знаю, что есть конвертеры из Bitmap в BitmapImage, но у меня для этого Bitmap'а инициализирован объект System.Drawing.Graphics(Graphics.FromImage). Выполнять конвертацию каждый раз при изменении Bitamap'a через Graphics весьма ресурсоёмко. Как быть?
  • Вопрос задан
  • 3048 просмотров
Пригласить эксперта
Ответы на вопрос 1
bstdman
@bstdman
Desktop разработчик
Ресурсоемко - возможно, если не очищать память после конвертации с помощью WinApi.

img - Bitmap
var img = new Bitmap(pictureSize.Width, pictureSize.Height);
            Graphics g = Graphics.FromImage(img);

            //
            // Здесь ваше рисование с использованием объекта g
            //

            g.Dispose();
            IntPtr hBitmap = img.GetHbitmap();
            BitmapSource src;
            try
            {
                src = Imaging.CreateBitmapSourceFromHBitmap(hBitmap,
                                                            IntPtr.Zero,
                                                            Int32Rect.Empty,
                                                            BitmapSizeOptions.
                                                                FromEmptyOptions());
                src.Freeze();
            }
            finally
            {
                DeleteObject(hBitmap);
            }

            return src;


[DllImport("gdi32.dll")]
        public static extern bool DeleteObject(IntPtr hObject);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы