テキストによるアンチエイリアシング

Windows GDI+ には、テキストを描画するためのさまざまな品質レベルが用意されています。 通常、品質の高いレンダリングほど、低品質のレンダリングよりも処理時間が長くなります。

品質レベルは Graphics クラスのプロパティです。 品質レベルを設定するには、Graphics オブジェクトの Graphics::SetTextRenderingHint メソッドを呼び出します。 Graphics::SetTextRenderingHint メソッドは、Gdiplusenums.h で宣言されている TextRenderingHint 列挙の要素のいずれかを受け取ります。

GDI+ は、従来のアンチエイリアシングと、Windows XP および Windows Server 2003 以降のバージョンの Windows でのみ使用できる Microsoft ClearType ディスプレイ テクノロジに基づく新しい種類のアンチエイリアシングを提供します。 ClearType スムージングは、ノート PC のモニターや高品質のフラット デスクトップ ディスプレイなど、デジタル インターフェイスを備えたカラー LCD モニターの読みやすさを向上させます。 CRT 画面の読みやすさもやや向上しています。

ClearType は、LCD ストライプの向きと順序に依存します。 現在、ClearType は RGB の順序付けされた垂直ストライプに対してのみ実装されています。 これは、タブレット PC を使用している場合、ディスプレイを任意の方向に向けることができる場合、または横から縦に変えることができる画面を使用している場合に問題になる可能性があります。

次の例では、2 つの異なる品質設定でテキストを描画します。

FontFamily  fontFamily(L"Times New Roman");
Font        font(&fontFamily, 32, FontStyleRegular, UnitPixel);
SolidBrush  solidBrush(Color(255, 0, 0, 255));
WCHAR       string1[] = L"SingleBitPerPixel";
WCHAR       string2[] = L"AntiAlias";

graphics.SetTextRenderingHint(TextRenderingHintSingleBitPerPixel);
graphics.DrawString(string1, -1, &font, PointF(10.0f, 10.0f), &solidBrush);

graphics.SetTextRenderingHint(TextRenderingHintAntiAlias);
graphics.DrawString(string2, -1, &font, PointF(10.0f, 60.0f), &solidBrush);
            

次の図は、前のコードの出力を示しています。

文字のエッジがギザギザの文字列と滑らかなエッジのコントラストを持つ文字列のスクリーン ショット