WPF:使用DrawingContext的Bezier曲线
我想使用DrawingContext类绘制贝塞尔曲线,如下所示:WPF:使用DrawingContext的Bezier曲线,wpf,drawing,bezier,drawingcontext,Wpf,Drawing,Bezier,Drawingcontext,我想使用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 Po
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 = new Pen(Brushes.Black, 1);
My_blackPen的初始化如下:
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 = new Pen(Brushes.Black, 1);
但我得到的结果是:
但我想要的是类似于中所示的东西
那么我错过了什么
编辑:
当我设置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
不要填充几何体
使用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
谢谢你的回答,当我不填充它时,路径就消失了。我在问题中添加了这一点。您意外地将IsStroked
设置为false。请参阅编辑。谢谢您的回答,当我不填充路径时,路径将消失。我在问题中添加了这一点。您意外地将IsStroked
设置为false。请参见编辑。