ラベルやテキストをよりスムーズにする方法を知っている人はいますか?現時点では、かなりギザギザに見えます。ラベルを動的にしたいので、Photoshopからテキストを挿入するだけでは不十分です。
4 に答える
テキストにアンチエイリアスを適用する場合は、テキストを表す画像を動的に生成する必要があります。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 にしたい場合は、プライベート変数のデフォルト値を変更するだけです。
ClearTypeのことですか?次に、ClearTypeを Windows で有効にする必要があり、MS Sans Serif ではなく、Tahoma や Segoe UI などの最新のフォントを使用する必要があります。
アップデート
問題の例を投稿しました。400%に拡大しました。明らかに ClearType サブピクセル アンチエイリアシングが有効になっています。個人的には、文字がギザギザに見えることはないと思います。より高品質の画面上のテキストが必要な場合は、より高い物理解像度 (1 インチあたりのピクセル数) の画面を購入し、(対応する) より大きなサイズでテキストを描画できます。そうすれば、テキストは画面上で同じサイズになりますが、はるかに滑らかに見えます。
ClearType をあきらめて、他のフォント スムージング アルゴリズムを使用することもできますが、ClearType はWindowsのフォント スムージング システムであるため、簡単なことではありません。
更新 2
Windows 7 を実行している場合は、ClearType を微調整できます。スタートメニューを開いて「ClearType」と書いてガイドを起動するだけ。VistaとXPのガイドもあると思いますが、おそらくデフォルトではインストールされていませんが、PowerToysなどとして利用できます...
ClearTypeが有効になっていることを確認します。