EMF изображение в поток Stream - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, у меня в pictureBox2.Image находится EMF изображение, мне нужно сохранить его в поток, когда в pictureBox2.Image находится BMP-ха, то все нормально сохраняется, вот как делаю
            MemoryStream ms = new MemoryStream();
 
            if (pictureBox2.Image.RawFormat.Equals( System.Drawing.Imaging.ImageFormat.Emf ))
                pictureBox2.Image.Save( ms, System.Drawing.Imaging.ImageFormat.Emf ); //<-- здесь ошибка
            else if (pictureBox2.Image.RawFormat.Equals( System.Drawing.Imaging.ImageFormat.Bmp ))
                pictureBox2.Image.Save( ms, System.Drawing.Imaging.ImageFormat.Bmp );
Ошибка:

Value cannot be null. Parameter name: encoder

Решение задачи: «EMF изображение в поток Stream»

textual
Листинг программы
[System.Runtime.InteropServices.DllImport("gdi32")]        public static extern int GetEnhMetaFileBits(int hemf, int cbBuffer, byte[] lpbBuffer); 
 
 
        public static void SaveMetafile(Metafile mf, string fileName)
        {
            int enhMetafileHandle = mf.GetHenhmetafile().ToInt32();
            int bufferSize = GetEnhMetaFileBits(enhMetafileHandle, 0, null); // Get required buffer size.
            byte[] buffer = new byte[bufferSize]; // Allocate sufficient buffer
            if(GetEnhMetaFileBits(enhMetafileHandle, bufferSize, buffer) <= 0) // Get raw metafile data.
                throw new SystemException("DoTheTrick.GetEnhMetaFileBits");
            using(FileStream ms = File.Open(fileName, FileMode.Create))
                ms.Write(buffer, 0, bufferSize);
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.231 из 5
Похожие ответы