如果使用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 +绘图命令的形式保存矢量图像。

您可以使用上述方法并调用Bitmapig.DrawImage(your_bitmap)保存到EMF文件,但是请注意,这不会神奇地将栅格数据隐藏到矢量图像中。

关于c# - GDI +/C#: How to save an image as EMF?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/152729/

10-11 15:22