2009-09-14 190 views
4

我们的程序需要生成矢量图形,我们选择EMF。但是,似乎其他程序渲染这些图像是非反锯齿的。我发现SVG格式确实有一个标志来指示某些/所有对象应该被反锯齿。强制抗锯齿EMF

EMF格式内是否有任何标志或命令表明我们想要抗锯齿?如果是这样,如何使用System.Drawing.Imaging.Metafile类生成该命令?

谢谢。

回答

11

EMF文件是GDI命令列表。因此,即使在GDI +下,您在绘图之前放置了一个SmoothingMode()调用,它也不会被反锯齿。您必须枚举GDI命令,然后将其转换为GDI +命令。

在Vista/Seven下,可以使用名为GdipConvertToEmfPlus/ConvertToEmfPlus的GDI + 1.1函数。 如果你希望你的程序能够使用XP,你应该编写自己的枚举,然后转换成GDI +命令。我们done this in Delphi,也许源代码可能会帮助你。

+2

@MisterDownVoter请给出你的-1的一些解释!即使将SmoothingMode设置为AntiAlias,EMF文件也不会永远不会反锯齿。您需要将其转换为EMF +格式。上面的乔希答案是不正确的,我的是。我只是在这里写的,因为以前的答案没有工作,我花了很多时间找出解决方案。 – 2011-01-20 18:42:52