如何使用wxPython根据四个点绘制贝塞尔曲线?

0 投票
2 回答
4406 浏览
提问于 2025-04-15 19:47

我觉得这个 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。看起来它正好满足我的需求,还有抗锯齿的功能(根据 这个页面 的说法)。

撰写回答