WxPython变焦技术
我正在开发一个wxpython项目,在其中我在一个面板上绘制一个图表,我需要能够放大/缩小这个图表(在我的例子中是一个有向无环图)。当光标在面板上时,我将通过鼠标滚动来实现这一点,但这不是我问题的一部分。我需要一个有经验的人对我使用的缩放方法提出建议。到目前为止,我认为WxPython变焦技术,python,wxpython,zooming,Python,Wxpython,Zooming,我正在开发一个wxpython项目,在其中我在一个面板上绘制一个图表,我需要能够放大/缩小这个图表(在我的例子中是一个有向无环图)。当光标在面板上时,我将通过鼠标滚动来实现这一点,但这不是我问题的一部分。我需要一个有经验的人对我使用的缩放方法提出建议。到目前为止,我认为 图中的矩形内有线条、矩形和文本。因此,也许我可以通过选择的鼠标事件来增加/减少它们的长度/大小。但是很难保持平衡,因为矩形与线连接,它们的角度不应该改变,矩形内的文本应该保持在它们中间。 我想做的另一个方法是搜索内置的缩放方法
- 图中的矩形内有线条、矩形和文本。因此,也许我可以通过选择的鼠标事件来增加/减少它们的长度/大小。但是很难保持平衡,因为矩形与线连接,它们的角度不应该改变,矩形内的文本应该保持在它们中间。
- 我想做的另一个方法是搜索内置的缩放方法。我听说了一些类似于
的东西。但是我对这种方法有一些疑问。这将适用于矢量图(如我的)而不是图像。它会只缩放我选择的面板而不是整个屏幕吗?在我听到你的建议后,我会更深入地研究这个问题,但现在我有点不知所措Scale
注2:我的研究也让我找到了
FloatCanvas
。这适合我的需要吗?是的,从你的描述来看,FloatCanvas
肯定能满足你的需要
另一个可能考虑的是FloatCanvas
FloatCanvas
可以提供这一点。使用wx.GraphicsContext
是否也可以实现这一点?是的,但在这种情况下,FloatCanvas
将是一个更好的选择,因为它已经为您实现了独立形状对象等更高级别的概念,包括命中测试和事件。要使用wx.Graphics
类实现这一点,需要自己实现很多,因为它实际上只是一个很好的绘图库,抽象级别低于FloatCanvas
。你可以阅读每一个的演示,以更好地了解它们是关于什么的。