2010-08-03 65 views
2

我想绘制一个自定义线帽 - 一个半径为r的等边三角形。显然我不能:来自.NET的CustomLineCap构造函数的NotImplementedException

Dim triangleSide As Single = CSng(3 * r/Math.Sqrt(3)) 
    Dim triangleHeight As Single = CSng(3 * r/2) 
    path = New GraphicsPath() 
    Dim points() As PointF = New PointF() { _ 
     New PointF(-triangleSide/2, 0), _ 
     New PointF(triangleSide/2, 0), _ 
     New PointF(0, triangleHeight) } 
    path.AddLines(points) 

    ' Not Implemented Exception, Was is Das? ' 
    _HlpCap = New CustomLineCap(path, Nothing) 

我有什么问题或者它只是一个框架错误?

编辑:

马克CIDADE句话后,我尝试使用(Nothing, path)它帮助,但我需要填写的三角形,不仅中风出来...

回答

1

唯一的例外来自GDI +库从GdipCreateCustomLineCap()函数返回NotImplemented状态。尝试传递行程路径而不是Nothing

Dim path2 As GraphicsPath = New GraphicsPath() 
    path2.AddLines(points); 
    _HlpCap = New CustomLineCap(path, path2) 
1

显然,路径不能穿过x轴。我用这个代码创建一个箭头帽:

GraphicsPath capPath = new GraphicsPath(); 
    float arrowSize = 2.0f; 
    capPath.AddLines(new PointF[] { 
    new PointF(arrowSize, -(float)Math.Sqrt(3.0) * arrowSize), 
    new PointF(0.0f, -0.01f), 
    new PointF(-arrowSize, -(float)Math.Sqrt(3.0) * arrowSize) 
    }); 

    CustomLineCap arrowCap = new CustomLineCap(capPath, null, LineCap.NoAnchor, (float)Math.Sqrt(3.0) * arrowSize);