如果使用Image.Save方法将图像保存到EMF/WMF,则会出现异常(http://msdn.microsoft.com/en-us/library/ktx83wah.aspx)
还有另一种将图像保存到EMF/WMF的方法吗?
有没有可用的编码器?
最佳答案
Image
是一个抽象类:您要执行的操作取决于您要处理的是Metafile
还是Bitmap
。
使用Metafile
可以很容易地使用GDI +创建图像并将其另存为EMF。 Per Mike的post:
var path = @"c:\foo.emf"
var g = CreateGraphics(); // get a graphics object from your form, or wherever
var img = new Metafile(path, g.GetHdc()); // file is created here
var ig = Graphics.FromImage(img);
// call drawing methods on ig, causing writes to the file
ig.Dispose(); img.Dispose(); g.ReleaseHdc(); g.Dispose();
这是您大部分时间要执行的操作,因为这就是EMF的目的:以GDI +绘图命令的形式保存矢量图像。
您可以使用上述方法并调用
Bitmap
将ig.DrawImage(your_bitmap)
保存到EMF文件,但是请注意,这不会神奇地将栅格数据隐藏到矢量图像中。关于c# - GDI +/C#: How to save an image as EMF?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/152729/