小编Mic*_*ael的帖子

TextRenderer.DrawText在XP vs Vista上呈现不同的Arial

我有一个ac#应用程序,它可以进行文本渲染,与简单的所见即所得文本编辑器相同.

我正在使用TextRenderer.DrawText将文本呈现到屏幕上,使用GetTextExtentPoint32来测量文本,这样我就可以在同一行上定位不同的字体样式/大小.

在Vista这一切都很好.然而,在XP中,Arial渲染方式不同,某些字符(如"o"和"b")占用的宽度比Vista中的宽.GetTextExtentPoint32似乎是在Vista中测量字符串,但宽度较小.最终结果是,每隔一段时间就会出现一段文本与之前的文本重叠,因为前面的文本被测量为小于它在屏幕上的实际值.

此外,我的文本渲染代码模仿即正确的文本渲染(仅用于简单格式和英文),即文本渲染似乎在vista和xp之间保持一致 - 这就是我注意到不同字符大小的变化.

有什么想法发生了什么?

简而言之,TextRenderer.DrawText和GetTextExtentPoint32在xp中与Arial不匹配.DrawText似乎绘制了比Vista中更大和/或更小的某些字符,但GetTextExtentPoint32似乎是在Vista中测量文本(它似乎与文本渲染相匹配,即在xp和vista上).希望有道理.

注意:遗憾的是TextRenderer.MeasureString不够快或不够准确,无法满足我的要求.我尝试使用它,不得不把它撕掉.

c# text windows-xp windows-vista textrenderer

6
推荐指数
1
解决办法
1103
查看次数

标签 统计

c# ×1

text ×1

textrenderer ×1

windows-vista ×1

windows-xp ×1