0

当我将增强型元文件(通过 C# 中的 GDI+ 构建)转换为旧式 Windows 元文件时,结果非常粗糙,显然是因为坐标被四舍五入到最近的屏幕像素。如果我通过任何一个转换,我会看到这个

GetWinMetaFileBits(emfh, bits_l, bits, MM_ANISOTROPIC, GetDC(0));

或使用 GDI+ 的 Metafile::EmfToWmfBits。罪魁祸首可能是正在使用的屏幕 DC。 这篇文章建议使用打印机 DC,它适用于我,但如果用户没有安装打印机,显然将无法使用。有没有更好的办法?为此,我考虑过创建一个高分辨率的内存 DC,但我找不到合适的文档,而且我也担心使用的 RAM。

4

2 回答 2

1

正常的方法是创建一个分辨率更高的内存 DC,渲染到它,然后根据需要保存它。请注意,字体大小可能会因此而搞砸。

 HDC memDC = CreateCompatibleDC ( hDC );
 HBITMAP memBM = CreateCompatibleBitmap ( hDC, nWidth, nHeight );
 SelectObject ( memDC, memBM );

使用 nWidth , nHeight 大得多。
CreateCompatible 位应该设置所有 dpi 等,但我遇到了字体被绘制为固定像素大小而不是重新缩放的问题 - 所以它们最终在 10,000 像素图像上只有 10 像素高

于 2011-02-09T00:03:41.287 回答
0

向 Google 询问 ENMETA.EXE

微软的描述

包括下载示例。

于 2011-02-10T20:05:59.897 回答