2012-01-28 14 views
4

少し修正された丸い角の四角形の特定のパスを生成する際に問題が発生しました。ここで私は丸い四角形を生成するために使用していたコードは次のとおりです。ASP.NET C#グラフィックパスの形状

public static System.Drawing.Drawing2D.GraphicsPath RoundedRectangle(Rectangle r, int d) 
    { 

     System.Drawing.Drawing2D.GraphicsPath gp = new System.Drawing.Drawing2D.GraphicsPath(); 

     gp.AddArc(r.X, r.Y, d, d, 180, 90); 
     gp.AddArc(r.X + r.Width - d, r.Y, d, d, 270, 90); 
     gp.AddArc(r.X + r.Width - d, r.Y + r.Height - d, d, d, 0, 90); 
     gp.AddArc(r.X, r.Y + r.Height - d, d, d, 90, 90); 
     gp.AddLine(r.X, r.Y + r.Height - d, r.X, r.Y + d/2); 

     return gp; 
    } 

今、私はこのような何かを生成する必要があります:

enter image description here

これを達成するための最良の方法でしょうか?たぶん左の枠線を消してから、どういう形で直角三角形を追加するのでしょうか?

すべてのヘルプは高く評価され、感謝!

答えて

1

これはあなたを助けます。

public void DrawRoundRect(Graphics g, Pen p, float x, float y, float width, float height, float radius) 
{ 
GraphicsPath gp = new GraphicsPath(); 

gp.AddLine(x + radius, y, x + width - (radius * 2), y); // Line 
gp.AddArc(x + width - (radius * 2), y, radius * 2, radius * 2, 270, 90); // Corner 
gp.AddLine(x + width, y + radius, x + width, y + height - (radius * 2)); // Line 
gp.AddArc(x + width - (radius * 2), y + height - (radius * 2), radius * 2, radius * 2, 0, 90); // Corner 
gp.AddLine(x + width - (radius * 2), y + height, x + radius, y + height); // Line 
gp.AddArc(x, y + height - (radius * 2), radius * 2, radius * 2, 90, 90); // Corner 
gp.AddLine(x, y + height - (radius * 2), x, y + radius); // Line 
gp.AddArc(x, y, radius * 2, radius * 2, 180, 90); // Corner 
gp.CloseFigure(); 

g.DrawPath(p, gp); 
gp.Dispose(); 

}