4

我正在使用 System.Drawing.Graphics 类和 DrawString() 方法将文本渲染到图像上。

我需要以一种非常具体的方式为该图像生成文本,以便它与现有图像完全匹配——逐个像素。

问题是 DrawString() 生成的文本与现有图像中的文本具有不同的字距(我的最佳猜测是每个字母大约 0.5 - 1 个像素)。

谁能告诉我在使用这个命名空间和方法时是否可以修改字距?

此外,它是我们正在使用的自定义字体,我们必须将其从 open-type(源图像使用的)转换为 true-type。在这个阶段可能已经修改了字距吗?

4

1 回答 1

3

http://blog.stevex.net/rendering-text-using-the-net-framework/

这些问题是文本字距调整的测量方式不同——更准确——但其方式通常与应用程序开发人员想要使用这些功能的方式不兼容。

解决方案:

ExtTextOut 不够聪明,无法进行这种字距调整,所以你没有这个问题。不幸的是,.NET 框架没有任何可以依赖的文本绘制函数,因此获得旧行为的唯一方法是通过 P/Invoke 到 GDI 中的 ExtTextOut 函数。

该链接有一些示例代码..希望有所帮助!

于 2010-07-13T08:00:36.880 回答