直線と曲線のアンチエイリアシング

Windows GDI+ を使用して線を描画する場合は、線の始点と終点を指定しますが、線上の個々のピクセルに関する情報を指定する必要はありません。 GDI+ がディスプレイ ドライバー ソフトウェアと連携して、特定のディスプレイ デバイスで直線を表示するために、どのピクセルをオンにするかを決定します。

点 (4, 2) から点 (16, 10) に向かう直線を考えてみましょう。 座標系の原点は左上隅にあり、測定単位はピクセルであるとします。 また、X 軸が右向きで Y 軸が下向きとします。 次の図は、多色の背景上に描画された赤い直線の拡大表示です。

多色の背景に単色の赤いピクセルを示す図

線のレンダリングに使用される赤いピクセルは不透明であることに注意してください。 線の表示に関与する部分的に透明なピクセルはありません。 この種類の線のレンダリングでは、線がジャグ状に見え、線は階段のように見えます。 階段状に直線を表現するこの方法は、エイリアシングと呼ばれます。階段部分は理論上の直線に対するエイリアスです。

線をレンダリングするためのより洗練された手法には、部分的に透明なピクセルと純粋な赤のピクセルを使用する必要があります。 ピクセルは、線にどれだけ近いかに応じて、純粋な赤または赤と背景色のブレンドに設定されます。 この種類のレンダリングはアンチエイリアシングと呼ばれ、結果として表示される直線は人間の目には滑らかに見えます。 次の図は、アンチエイリアシングされた直線を生成するために、特定のピクセルと背景をブレンドする方法を示しています。

同じ背景に赤の色合いを持つピクセルを示す図

アンチエイリアシング (スムージング) は、カーブにも適用できます。 次の図は、スムージングされた楕円の拡大表示です。

白い背景の青いピクセルの異なる色合いで構成された楕円のイラスト

次の図は、実際のサイズの同じ楕円を示しています。アンチエイリアシングを適用していないものと適用したものです。

2 つの楕円のスクリーン ショット: アンチエイリアシングが付いているものは、特に滑らかに見えます

アンチエイリアシングを使用する線と曲線を描画するには、 Graphics オブジェクトを作成し、 SmoothingModeAntiAliasGraphics::SetSmoothingMode メソッドに 渡します。 次に、同じ Graphics オブジェクトの描画メソッドのいずれかを呼び出します。

myGraphics.SetSmoothingMode(SmoothingModeAntiAlias);
myGraphics.DrawLine(&myPen, 0, 0, 12, 8);

SmoothingModeAntiAliasSmoothingMode 列挙体の要素です。