1

我想使用 DrawingContext 类绘制贝塞尔曲线,如下所示:

var pathFigure = new PathFigure();
pathFigure.StartPoint = new Point(Width - 15, line.Position + line.Height);

pathFigure.Segments.Add(new BezierSegment(new Point(Width - 7.5, line.Position + line.Height - 20),new Point(Width, line.Position + line.Height + 20), new Point(Width + 7.5, line.Position + line.Height), false));
pathFigure.IsClosed = false;

var path = new PathGeometry();
path.Figures.Add(pathFigure);

drawingContext.DrawGeometry(Brushes.Black, _blackPen, path);

我的 _blackPen 初始化如下:

 _blackPen = new Pen(Brushes.Black, 1);

但我得到了这个结果:

在此处输入图像描述

但我想要的是类似于此链接中显示的内容。

那么我错过了什么?

编辑:

当我设置pathFigure.IsFilled = false;路径消失:

在此处输入图像描述

这同样适用于drawingContext.DrawGeometry(null, _blackPen, path);

4

1 回答 1

3

不要填充几何图形。

要么使用null画笔

drawingContext.DrawGeometry(null, _blackPen, path);

或设置

pathFigure.IsFilled = false;

您还需要将IsStrokedBezierSegment 的属性设置为true

pathFigure.Segments.Add(
    new BezierSegment(
        new Point(Width - 7.5, line.Position + line.Height - 20),
        new Point(Width, line.Position + line.Height + 20),
        new Point(Width + 7.5, line.Position + line.Height),
        true)); // here
于 2020-01-14T06:07:33.657 回答