直線と曲線のアンチエイリアシング
更新 : 2007 年 11 月
GDI+ を使用して直線を描画する場合は、直線の開始点と終了点を指定しますが、直線上のそれぞれのピクセルについての情報を指定する必要はありません。GDI+ とディスプレイ ドライバ ソフトウェアによって、特定の表示デバイス上で直線を表示するためにどのピクセルをオンにするかが決定されます。
エイリアシング
点 (4, 2) と点 (16, 10) を結ぶ赤い直線を表示するとします。座標系の原点が左上隅で、座標系の単位がピクセルであると仮定します。また、x 軸が右向き、y 軸が下向きであると仮定します。多色の背景上に描画された、赤い直線を拡大した表示を次の図に示します。
直線のレンダリングに使用された赤いピクセルは不透明です。直線上には、部分的に透明なピクセルはありません。直線をこの方法でレンダリングすると、直線の輪郭がぎざぎざになり、細かい階段状になった直線が表示されます。このように階段状の表示を使用して直線を表現する手法をエイリアシングと呼びます。階段状の表示は、理論上の直線です。
アンチエイリアシング
エイリアシングよりも高度な直線のレンダリング手法では、不透明なピクセルと共に部分的に透明なピクセルを使用します。各ピクセルは、ピクセルから直線までの距離に応じて、純色の赤または赤と背景色をブレンドした色に設定されます。このようなレンダリングをアンチエイリアシングと呼び、この手法で生成される直線は、人間の目にはより滑らかに映ります。アンチエイリアシングで直線を生成するために、特定のピクセルと背景がどのようにブレンドされるかを次の図に示します。
アンチエイリアシング (平滑化) は、曲線にも適用できます。平滑化された楕円を拡大した表示を次の図に示します。
実サイズの同じ楕円にアンチエイリアシングを適用していない例と、アンチエイリアシングを適用した例を次の図に示します。
アンチエイリアシングを適用した直線および曲線を描画するには、Graphics クラスのインスタンスを作成し、その SmoothingMode プロパティを AntiAlias または HighQuality に設定します。次に、同じ Graphics クラスのいずれかの描画メソッドを呼び出します。
myGraphics.SmoothingMode = SmoothingMode.AntiAlias
myGraphics.DrawLine(myPen, 0, 0, 12, 8)
myGraphics.SmoothingMode = SmoothingMode.AntiAlias;
myGraphics.DrawLine(myPen, 0, 0, 12, 8);
参照
処理手順
参照
System.Drawing.Drawing2D.SmoothingMode