如何使用wxPython根据四个点绘制贝塞尔曲线?
我觉得这个 DC 只支持用样条曲线来画各种曲线。那么有没有什么库可以增加贝塞尔曲线的功能,或者有没有办法把贝塞尔曲线转换成样条曲线呢?
2 个回答
2
给定4个控制点,计算与之相关的三次贝塞尔曲线的公式其实并不复杂。一旦你计算出曲线上的一组点,就可以使用DC.DrawLines
来绘制它。
这里有一个用Python实现的计算广义贝塞尔曲线的代码(有点自卖自夸),你可以在这里找到。这个实现的特别之处在于,它可以接受任意数量的控制点(大于2个)作为输入来调用make_bezier
。如果你只想要4个控制点的版本,可以完全去掉pascal_row
,然后用
combinations=pascal_row(n-1)
替换成
combinations=(1,3,3,1)
1
经过一点搜索,我觉得我可以使用 wx.GraphicsContext,它支持 wx.GraphicsPath。看起来它正好满足我的需求,还有抗锯齿的功能(根据 这个页面 的说法)。