我有三个已知的位置,目前我正在驾驶两条线路,如下所示:
Line line = new Line
{
StrokeThickness = 3,
Stroke = lineColor,
X1 = MyX,
Y1 = MyY,
X2 = MyX,
Y2 = MiddleY
};
Graph.Children.Add(line);
line = new Line
{
StrokeThickness = 3,
Stroke = lineColor,
X1 = MyX,
Y1 = MiddleY,
X2 = TargetX,
Y2 = TargetY
};
Graph.Children.Add(line);
结果如下:
如你所见,这几乎就是我想要的,除了我想让它更平滑一点。
现在我在寻找一种方法,可以设置三个点,在中间点设置一些平滑/弯曲的水平,然后用纯色画一条线,就像我在Photoshop中做的那样:
或者至少得到类似的光滑度。
3条答案
按热度按时间vom3gejh1#
我想你是在找样条曲线
http://msdn.microsoft.com/en-us/library/554h284b.aspx
Gabe是正确的,这是从形式
在WPF下,你可以尝试一个PolyBezierSegment,但是它需要4个点。可能你可以在3个点和1个以上的形状。
这将产生以下曲线
olhwl3o22#
您希望使用PathFigure,特别是使用一组BezierSegments。
uhry853o3#
为了实现平滑曲线,我们可以使用cubic bezier curves,如above answer上所示,带有PolyBezierSegment类。
工作原理
三次Bezier曲线由四个点定义:起始点、结束点和两个控制点。
对于集合中的每三个点,第一个点和第二个点指定曲线的两个控制点,第三个点指定终点。请注意,没有指定曲线的起点,因为起点与最后一段的终点相同。
如果只想指定动态计算控制点所需的每条线段的起点和终点,则这将取决于所需的曲率类型。
在下面的例子中,我将定义3个点,然后我将硬编码控制点来定义曲率,这应该是根据您的需要计算曲率的算法。
结果: