描画を行う際に普通に楕円などを描くと、ギザギザするように描画されます。
これを、アンチエイリアス化して描画するには、Graphicsクラスの以下のプロパティを設定します。
Graphics.SmoothingMode
SmoothingModeに何を設定するかによって、描画の品質が変わります。
よく使う値は以下のものです。
SmoothingMode.AntiAlias
また、文字列を描画する際にもアンチエイリアス処理を施すことが出来ます。
その場合は、以下のプロパティを使用します。
Graphics.TextRenderingHint
よく設定する値は以下のものです。名前空間がSystem.Drawing.Textなのに注意です。
TextRenderingHint.AntiAlias
以下サンプルです。
// vim:set ts=4 sw=4 et ws is nowrap ft=cs: using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; namespace Gsf.Demo{ public class DemoForm : Form{ public DemoForm(){ InitializeComponent(); Paint += (s, e) => { const int PEN_WIDTH = 10; const int ELLIPSE_X = 30; Size ellipseSize = new Size(200, 100); SmoothingMode old = e.Graphics.SmoothingMode; // // no antialias. // using(Pen pen = new Pen(Color.Red, PEN_WIDTH)){ e.Graphics.DrawEllipse(pen, new Rectangle(new Point(ELLIPSE_X, 20), ellipseSize)); } // // use antialias. // e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; using(Pen pen = new Pen(Color.Blue, PEN_WIDTH)){ e.Graphics.DrawEllipse(pen, new Rectangle(new Point(ELLIPSE_X, 150), ellipseSize)); } // // use high-quality. // e.Graphics.SmoothingMode = SmoothingMode.HighQuality; using(Pen pen = new Pen(Color.Black, PEN_WIDTH)){ e.Graphics.DrawEllipse(pen, new Rectangle(new Point(ELLIPSE_X, 270), ellipseSize)); } e.Graphics.SmoothingMode = old; Font f = new Font("Lucida Console", 30, FontStyle.Regular); // // normal draw strings. // e.Graphics.DrawString("Sample Text", f, Brushes.Black, ELLIPSE_X, 400); // // use TextRenderingHint(AntiAlias). // e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias; e.Graphics.DrawString("Sample Text", f, Brushes.Black, ELLIPSE_X, 450); // // use TextRenderingHint(ClearType). // e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit; e.Graphics.DrawString("Sample Text", f, Brushes.Black, ELLIPSE_X, 500); }; } protected void InitializeComponent(){ SuspendLayout(); Width = 400; Height = 600; ResumeLayout(); } [STAThread] static void Main(){ Application.EnableVisualStyles(); Application.Run(new DemoForm()); } } }
実行すると、アンチエイリアスが施されているのが確認できます。