Преобразовать растровое изображение в метафайл (.emf) - PullRequest
1 голос
/ 28 апреля 2011

У меня есть файл растрового изображения (.bmp), и я хочу преобразовать его в формат метафайла (.emf). В настоящее время я использую этот код:

        Metafile metafile;
        using (MemoryStream stream = new MemoryStream())
        using (Graphics rtfBoxGraphics = m_ActiveTab.Controls[0].CreateGraphics())
        {
          IntPtr pDeviceContext = rtfBoxGraphics.GetHdc();

          metafile = new Metafile(stream, pDeviceContext);
          using (Graphics imageGraphics = Graphics.FromImage(metafile))
          {               
            imageGraphics.DrawImageUnscaled(bmp1, new Rectangle(0, 0,bmp1.Width, bmp1.Height));     
          }
          rtfBoxGraphics.ReleaseHdc(pDeviceContext);
        }

        // Get a handle to the metafile
        IntPtr iptrMetafileHandle = metafile.GetHenhmetafile();

        // Export metafile to an image file
        CopyEnhMetaFile(iptrMetafileHandle, @"e:\Test\test4.emf");

        // Delete the metafile from memory
        DeleteEnhMetaFile(iptrMetafileHandle);


[DllImport("gdi32.dll")]
static extern IntPtr CopyEnhMetaFile(  // Copy EMF to file
  IntPtr hemfSrc,   // Handle to EMF
  String lpszFile // File
);

[DllImport("gdi32.dll")]
static extern int DeleteEnhMetaFile(  // Delete EMF
  IntPtr hemf // Handle to EMF
);

Почему этот код не работает должным образом? Пожалуйста, предоставьте мне полный код для преобразования растрового файла в файл метафайла (особенно .emf). или же Если возможно, тогда скажите мне, как я могу сохранить графический объект в формате метафайла. Предположим, у меня есть этот код

Graphics NewGraphicsObj = m_ActiveTab.Controls[0].CreateGraphics();

Теперь я хочу сохранить этот NewGraphicsObj в метафайле.

Любая помощь по этой теме

Заранее спасибо ...

...