2010-08-02 69 views
8

我有下面的代码,绘制了(非常)小箭头的线......如何:用箭头画一条线?

private void Form1_Paint(object sender, PaintEventArgs e) 
    { 
     Pen p = new Pen(Color.Black); 
     p.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor; 

     e.Graphics.DrawLine(p, 10, 10, 100, 100); 
     p.Dispose(); 
    } 

我要画一个大箭头圆形,方形,三角形等 ... ),保持相同的线宽

可能吗?

回答

13

你想要使用CustomLineCapGraphicsPath。这里有一个例子:

using(Pen p = new Pen(Color.Black)) 
using(GraphicsPath capPath = new GraphicsPath()) 
{ 
    // A triangle 
    capPath.AddLine(-20, 0, 20, 0); 
    capPath.AddLine(-20, 0, 0, 20); 
    capPath.AddLine(0, 20, 20, 0); 

    p.CustomEndCap = new System.Drawing.Drawing2D.CustomLineCap(null, capPath); 

    e.Graphics.DrawLine(p, 0, 50, 100, 50); 
} 

你想“设计”您的顶盖采用了线去顶部至底部,并从(0,0),以获得正确的坐标。

编辑:我只是想提一提,你也可以用AdjustableArrowCap绘制特定大小的箭头,并填补它,而是因为你提到的其他形状的要求,我已经使用了CustomLineCap。

+0

是的..我知道关于customcap ...不方便的是,它不会改变线宽...理想的情况下,如果帽是一个属性像“CapScale”或“CapSize”......但它不存在...这也是一个遗憾,不存在'AdjustableCircleCap'或'AdjustableSquareCap' ... – serhio 2010-08-03 08:24:56

+1

@serhio - 你是什么意思,它不会改变线宽?如果你改变笔的宽度,它会画出一条更粗的线。你能解释一下你的意思吗?你也可以推出你自己的''AdjustableCircleCap'',当你知道如何正确使用'GraphicsPath'并不难。如果你不确定,我可以为你写一篇。 – TheCloudlessSky 2010-08-03 11:59:33

+3

用于'AdjustableArrowCap'的+1 – SOUser 2011-03-25 16:53:11