1

我在 .Net 中有一些代码可以使用 GDI+ 绘制一些文本内容。我使用 GraphicsUnit.Point 来调整文本大小。它在屏幕上运行得非常好,即使打印它也是如此。

我被要求制作一个生成 PDF 的系统,并且我得到了 ComponentOne 的 PDF 控件。它具有与 GDI+ 类似的界面。

问题是:字体大小不起作用。如果我使用 GraphicsUnit.Point,文本会小得多,并且文本下方会出现空白。当我使用 GraphicsUnit.World 时,文本仍然很小,但文本下方没有多余的空白空间。

我想了解如何将 GraphicsUnit.World 转换为 GraphicsUnit.Point。

所有帮助将不胜感激。

谢谢

4

2 回答 2

2

经过一些谷歌搜索以及我从 GDI+ 和字符串绘图的个人经验中了解到的情况,它归结为 DPI(每英寸点数)。基本上不同的设备(就 GDI+ 而言,PDF 可能是一个设备)具有不同的 DPI 值。显示器通常有类似 70 DPI 的东西。打印机使用 72。我不知道 PDF 使用什么,但它可能是 100(因为这是设备独立性的常见值,可以解释较小的文本)。

现在,点被定义为 72 DPI。这总是正确的。当绘制到具有不同 DPI 的 PDF 时,GDI+ 应该做的是相应地转换字符串绘制。但这并不总是有效,尤其是文本。

GraphicsUnit.World 应该(根据一些谷歌搜索)独立于设备,并且在所有设备上看起来都应该相同。

于 2008-11-07T21:23:13.613 回答
0

没错,GraphicsUnit.World 在打印和屏幕上看起来都一样。我的最终解决方案是使用 GraphicsUnit.World 作为度量单位,并避开点。我仍然不知道转换率,但我估计了这个值,直到看起来还不错。

就我的目的而言,这就足够了。

于 2008-11-10T10:23:20.633 回答