0

以前の Windows バージョンのように、Windows 8 で Tahoma フォント テキストをレンダリングする方法はありますか? WinForms アプリケーションで GDI Graphics.DrawString() を使用して描画していますが、結果は大きく異なります。文字の間隔が悪い。

ありがとう。

4

1 に答える 1

5

はい、常にTextRendererクラスを優先する必要があります。モニターなどの低DPIデバイスでのGraphics.DrawString()のかなり壊れた動作を修正します。TextRenderer.DrawText()は、GDIのDrawTextEx()winapi関数を使用します。これは、多くのネイティブWindowsプログラムでテキストをレンダリングするために使用される関数と同じです。

2つの違いの良いデモンストレーションは、次のサンプルフォームです。

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
    }
    protected override void OnPaint(PaintEventArgs e) {
        var s = "Hiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii";
        e.Graphics.DrawString(s, this.Font, Brushes.Black, 0, 0);
        TextRenderer.DrawText(e.Graphics, s, this.Font, new Point(0, this.Font.Height), Color.Black);
        base.OnPaint(e);
    }
}

次のような96dpiモニターの場合:

ここに画像の説明を入力してください

于 2012-12-07T10:30:16.383 に答える