WPF:使用 DrawingContext 的贝塞尔曲线
WPF: Bezier curve using DrawingContext
我想使用 DrawingContext class 绘制贝塞尔曲线,如下所示:
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);
但我得到了这个结果:
但我想要的是this link中所示的东西。
那我错过了什么?
编辑:
当我设置 pathFigure.IsFilled = false;
路径消失时:
drawingContext.DrawGeometry(null, _blackPen, path);
也一样
不填充几何图形。
要么使用null
画笔
drawingContext.DrawGeometry(null, _blackPen, path);
或设置
pathFigure.IsFilled = false;
您还需要将BezierSegment的IsStroked
属性设置为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
我想使用 DrawingContext class 绘制贝塞尔曲线,如下所示:
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);
但我得到了这个结果:
但我想要的是this link中所示的东西。
那我错过了什么?
编辑:
当我设置 pathFigure.IsFilled = false;
路径消失时:
drawingContext.DrawGeometry(null, _blackPen, path);
不填充几何图形。
要么使用null
画笔
drawingContext.DrawGeometry(null, _blackPen, path);
或设置
pathFigure.IsFilled = false;
您还需要将BezierSegment的IsStroked
属性设置为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