5

カスタム ライン キャップ (半径 r の正三角形) を描画したいと考えています。どうやら私はできません:

  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) 

私は何か間違っていますか、それとも単なるフレームワークのバグですか?

編集:

Mark Cidade の発言の後、使用(Nothing, path)してみましたが役に立ちましたが、三角形を塗りつぶすだけでなく、塗りつぶす必要があります...

4

4 に答える 4

0

どうやら、パスは 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);
于 2011-12-08T13:15:59.463 に答える
0

NotImplemented例外は、関数からステータスを返す GDI+ ライブラリから発生しGdipCreateCustomLineCap()ます。の代わりにストローク パスを渡してみてくださいNothing:

  Dim path2 As GraphicsPath = New GraphicsPath()
  path2.AddLines(points);
  _HlpCap = New CustomLineCap(path, path2) 
于 2010-08-03T09:46:59.697 に答える