6

ラベルやテキストをよりスムーズにする方法を知っている人はいますか?現時点では、かなりギザギザに見えます。ラベルを動的にしたいので、Photoshopからテキストを挿入するだけでは不十分です。

4

4 に答える 4

17

テキストにアンチエイリアスを適用する場合は、テキストを表す画像を動的に生成する必要があります。msdn の例を次に示します: http://msdn.microsoft.com/en-us/library/a619zh6z.aspx

編集:以下のコメントごとに編集。

リンクは、コントロールの OnPaint イベントを使用して別の TextRenderingHint を使用することを説明しています。もう少し再利用可能なものが必要な場合は、Label クラスを拡張する Custom Label クラスを作成し、これをフォームで使用します。

public partial class CustomLabel : Label
{
    private TextRenderingHint _hint = TextRenderingHint.SystemDefault;   
    public TextRenderingHint TextRenderingHint
    {
        get { return this._hint; }
        set { this._hint = value; }
    }        

    protected override void OnPaint(PaintEventArgs pe)
    {            
        pe.Graphics.TextRenderingHint = TextRenderingHint;
        base.OnPaint(pe);
    }
}

CustomLabel (または任意の名前) という名前の新しいカスタム コントロールを追加し、上記のコードを使用します。プロジェクトを再ビルドすると、CustomLabel コントロールがツールボックスの上部の [MyProject Components] カテゴリの下に表示されるはずです。このカスタム ラベルのプロパティ ペインに、新しい TextRenderingHint プロパティが表示されます。これを「アンチエイリアス」に設定します。フォームに別のラベルを追加して、外観を比較します。

デフォルトで AntiAlias にしたい場合は、プライベート変数のデフォルト値を変更するだけです。

于 2010-04-09T17:27:35.847 に答える
5

ClearTypeのことですか?次に、ClearTypeを Windows で有効にする必要があり、MS Sans Serif ではなく、Tahoma や Segoe UI などの最新のフォントを使用する必要があります。

アップデート

問題の例を投稿しました。400%に拡大しました。明らかに ClearType サブピクセル アンチエイリアシング有効になっています。個人的には、文字がギザギザに見えることはないと思います。より高品質の画面上のテキストが必要な場合は、より高い物理解像度 (1 インチあたりのピクセル数) の画面を購入し、(対応する) より大きなサイズでテキストを描画できます。そうすれば、テキストは画面上で同じサイズになりますが、はるかに滑らかに見えます。

ClearType をあきらめて、他のフォント スムージング アルゴリズムを使用することもできますが、ClearType はWindowsのフォント スムージング システムであるため、簡単なことではありません。

更新 2

Windows 7 を実行している場合は、ClearType を微調整できます。スタートメニューを開いて「ClearType」と書いてガイドを起動するだけ。VistaとXPのガイドもあると思いますが、おそらくデフォルトではインストールされていませんが、PowerToysなどとして利用できます...

于 2010-04-09T17:27:05.683 に答える
0

ClearTypeが有効になっていることを確認します。

于 2010-04-09T17:27:06.570 に答える