EMF преобразуется в растровое изображение с помощью операции Save
.
EMF может быть успешно записана благодаря этому ответу с незначительными изменениями.
using System.Runtime.InteropServices;
включая в класс
[DllImport("gdi32.dll")]
internal static extern uint GetEnhMetaFileBits(IntPtr hemf,
uint cbBuffer, byte[] lpbBuffer);
[DllImport("gdi32.dll")]
internal static extern bool DeleteEnhMetaFile(IntPtr hemf);
и изменяя код
private void button1_Click(object sender, EventArgs e)
{
Metafile emf = null;
using (var ms = new MemoryStream(Properties.Resources.blank))
{
emf = new Metafile(ms);
}
IntPtr h = emf.GetHenhmetafile();
uint size = GetEnhMetaFileBits(h, 0, null);
byte[] data = new byte[size];
GetEnhMetaFileBits(h, size, data);
using (FileStream w = File.
Create("C:\\Users\\chrisd\\Documents\\emfbitmap1.emf"))
{
w.Write(data, 0, (int)size);
}
DeleteEnhMetaFile(h);
}
Конечно, если не требуется иметь ЭМП в памяти, его можно записать на дискнепосредственно.Например,
private void button1_Click(object sender, EventArgs e)
{
File.WriteAllBytes("C:\\Users\\chrisd\\Documents\\emfbitmap1.emf",
Properties.Resources.blank);
}