コントロールをC#WinFormsでサブクラス化し、OnPaint()
ハンドラーでテキストをカスタム描画しています。私のフォームで次のコードを使用して、フォントをCourierNewに設定します。
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」間のスペースが2番目の「as」間のスペースとは異なることがわかります(1ピクセルと2ピクセル)。何がこれを引き起こしているのか、またはどうすればそれが起こらないようにすることができるのか、誰かが知っていますか?異なるフォントで描くと、間隔に似たような奇妙さがたくさんありますが、それらはすべて同じ問題の結果であると思います。
あなたが持っているかもしれないどんな考えにも前もって感謝します。