|
分類:[C#]
VS2008・C#でWindowsアプリケーションを開発しています。
3点を結んで、直線(破線)をGraphicsのDrawLinesで描画する際、 線がガタガタに見えてしまうのに困っています…。 以下のようなメソッドで描画しています。
private void DrawBorder(Graphics g) { //g.SmoothingMode = SmoothingMode.AntiAlias; //g.PixelOffsetMode = PixelOffsetMode.HighQuality;
Pen pen = new Pen(Color.Black); pen.DashCap = DashCap.Round; pen.DashPattern = new float[] { 3.0f, 3.0f, 3.0f, 3.0f };
// 直線・論理座標配列 PointF[] pfa = new PointF[3]; pfa[0] = new PointF(54400, 153740); pfa[1] = new PointF(49520, 153090); pfa[2] = new PointF(41860, 153020);
try { PointF[] vpfa = new PointF[3]; // 論理座標→物理座標※ここは省略
g.DrawLines(pen, vpfa); } catch (System.Exception ex) { Debug.WriteLine(ex.Message + "\n" + ex.StackTrace); } finally { pen.Dispose(); } } 直線がガタガタになるのと、破線の点々の長さがバラバラになり、 見た目が良くありません。 アンチエイリアスを指定するとスムーズになりますが、 どうしても線がぼやけてしまいます。
APIで描画も考えたのですが、分かりやすいサンプルコードが見つからず、 手をつけられないでいます;;
何か解決策ご存知の方いらっしゃいましたら、よろしくお願い致します!
|