我在 C# WinForms 中对控件进行了子类化,并且在我的OnPaint()
处理程序中自定义了绘图文本。在我的表单中使用以下代码将字体设置为 Courier New:
FontFamily family = new FontFamily("Courier New");
this.myControl.Font = new Font(family, 10);
在控件本身中,字符串存储在 中realText
,我使用以下代码将其绘制到屏幕上:
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.DrawString(realText, Font, new SolidBrush(ForeColor), ClientRectangle);
}
一些随机示例文本的结果如下所示:http: //img219.imageshack.us/img219/1778/courier.png
例如,如果放大,您可以看到第一个“as”之间的空间与第二个“as”之间的空间不同(1 个像素对 2 个像素)。有谁知道可能导致这种情况的原因,或者我如何防止它发生?当我用不同的字体绘制时,间距有更多类似的怪异,但我认为它们都是同一个问题的结果。
提前感谢您的任何想法。