我使用简单的代码在指定的矩形内绘制文本。一切工作正常,除了有时文本布局根据图形比例(通过Graphics.ScaleTransform方法设置)不同。更改图形比例时.NET DrawString()不同的文本布局
很难用语言描述的问题,所以来看看例子image
- ScaleTransform设置为东西0.3左右 - 文本中指定的矩形区域内的一个线相符。
- ScaleTransform设置为0.6左右 - 文本被包裹在最后一个单词之前。
在这两种情况下,它是相同的字体,文本,布局矩形,StringFormatting等。唯一改变的就是规模。请注意,我不使用“字体缩放”!在这两种情况下,它甚至是相同的字体对象。没有设置StringFormatFlags。
我该如何解决这个问题?我不在乎文本是否被包装 - 我只需要一致性。无论规模如何,总是包装或不包装。怎么做?
它不会呈现同样的我已经注意到明显放缓。第一行用TextRenderingHint.ClearTypeGridFit呈现,第二行用TextRenderingHint.AntiAlias呈现。使用像SysInternal的ZoomIt这样的工具来查看。 TrueType提示使这件事变得困难,它延伸字母以使茎与像素网格重合。关掉它使它变得丑陋。为此留出一些空间。 –
Hans,在这两种情况下TextRenderingHint都设置为SystemDefault。改变它为例如AntiAlias没有帮助 - 差异仍然存在(虽然文字看起来好多了)。 – SiliconMind
但是,似乎将TextRenderingHint更改为SingleBitPerPixel或SingleBitPerPixelPixelGridFit有所帮助 - 文本从不包装(但看起来很丑陋)。不幸的是,这并不能解决问题,因为如果我向GraphicsPath添加文本(最终我在应用程序中做了什么),则无法模拟SingleBitPerPixelGridFit设置。 – SiliconMind