2011-09-08 31 views
3

我正尝试在visio中创建连接符号。我已经使用Graphics.Drawline方法创建了这些连接器。但是我不知道如何让弯曲来平滑曲线,就像微软的visio一样。需要在行中创建圆角?

代码:

protected override void Render(Graphics gfx) 
{ 
    PointF[] pts = GetPathPoints(); 
    gfx.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; 
    float x = (float)((pts[0].X + pts[1].X)/2 - 5); 
    float y = 0F; 

    PointF start = new PointF((float)(pts[0].X), (float)(pts[0].Y)); 
    PointF end = new PointF((float)(pts[1].X), (float)(pts[1].Y)); 

    PointF pt1 = new PointF((float)(start.X), (float)(start.Y-50)); 
    PointF pt2 = new PointF((float)(end.X), (float)(end.Y - 50)); 

    using (Pen pen = this.LineStyle.CreatePen()) 
    { 
     gfx.DrawLine(pen, start, pt1); 
     gfx.DrawLine(pen, pt1, pt2); 
     gfx.DrawLine(pen, pt2, end); 
    } 
} 

请看到在下面的链接光滑弯曲连接器: http://en.wikipedia.org/wiki/File:BPMN-CollectVotes.jpg

我怎样才能在Visio绘制圆角线线是怎样的?

+0

不知道如果有一个更简单的方法,有可能是,但遵守前面使用四分之一圆的弧形弯曲总是进行第一次尝试。 – Anton

+1

您需要分离连接到同一个点(角落)的两条线端,将它们拉回20个像素(更多或更少),然后绘制连接这两条线端的弧线。没有其他办法。 – Cipi

+0

学习者,你只需要先阅读这个:http://stackoverflow.com/questions/1805582/net-gdi-drawing-lines-with-rounded-corners –

回答