GraphicsUnit.Point,不能很好地转换为PDF… GraphicsUnit.World是,但我怎样才能将它转换为Point?

StackOverflow https://stackoverflow.com/questions/258035

  •  06-07-2019
  •  | 
  •  

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

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

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

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

所有帮助将不胜感激。

由于

有帮助吗?

解决方案

经过一些Googeling以及我从GDI +和String绘图的个人经验中得知,它归结为DPI(Dots per Inch)。基本上,不同的设备(就GDI +而言,PDF可能是一种设备)具有不同的DPI值。显示器通常有70 DPI。打印机使用72.我不知道PDF使用什么,但它可能是100(因为这是设备独立性的常见值,可以解释较小的文本)。

现在,点被定义为72 DPI。这总是如此。当绘制到具有不同DPI的PDF时,GDI +应该做的是相应地转换字符串绘图。但这并不总是有效,特别是对于文本。搜索结果 GraphicsUnit.World应该(根据一些googeling)与设备无关,并且应该在所有设备上看起来都一样。

其他提示

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

为了我的目的,这已经足够了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top