WxPython变焦技术

WxPython变焦技术,python,wxpython,zooming,Python,Wxpython,Zooming,我正在开发一个wxpython项目,在其中我在一个面板上绘制一个图表,我需要能够放大/缩小这个图表(在我的例子中是一个有向无环图)。当光标在面板上时,我将通过鼠标滚动来实现这一点,但这不是我问题的一部分。我需要一个有经验的人对我使用的缩放方法提出建议。到目前为止,我认为 图中的矩形内有线条、矩形和文本。因此,也许我可以通过选择的鼠标事件来增加/减少它们的长度/大小。但是很难保持平衡,因为矩形与线连接,它们的角度不应该改变,矩形内的文本应该保持在它们中间。 我想做的另一个方法是搜索内置的缩放方法

我正在开发一个wxpython项目,在其中我在一个面板上绘制一个图表,我需要能够放大/缩小这个图表(在我的例子中是一个有向无环图)。当光标在面板上时,我将通过鼠标滚动来实现这一点,但这不是我问题的一部分。我需要一个有经验的人对我使用的缩放方法提出建议。到目前为止,我认为

  • 图中的矩形内有线条、矩形和文本。因此,也许我可以通过选择的鼠标事件来增加/减少它们的长度/大小。但是很难保持平衡,因为矩形与线连接,它们的角度不应该改变,矩形内的文本应该保持在它们中间。
  • 我想做的另一个方法是搜索内置的缩放方法。我听说了一些类似于
    Scale
    的东西。但是我对这种方法有一些疑问。这将适用于矢量图(如我的)而不是图像。它会只缩放我选择的面板而不是整个屏幕吗?在我听到你的建议后,我会更深入地研究这个问题,但现在我有点不知所措
对不起,如果我的问题太理论化了。但我觉得我需要这方面的帮助。提前谢谢

注意:缩放不一定通过滚动应用


注2:我的研究也让我找到了
FloatCanvas
。这适合我的需要吗?

是的,从你的描述来看,
FloatCanvas
肯定能满足你的需要


另一个可能考虑的是 Wx、GraphicsContext < /C>和相关类。它基于矢量(而不是光栅),并支持使用变换矩阵,这将使缩放、旋转等变得非常容易。但是,实际绘制和管理形状等可能需要比使用

FloatCanvas

更多的工作,我的绘图也将是交互式的。类似创建的矩形将用作按钮。我读到
FloatCanvas
可以提供这一点。使用
wx.GraphicsContext
是否也可以实现这一点?是的,但在这种情况下,
FloatCanvas
将是一个更好的选择,因为它已经为您实现了独立形状对象等更高级别的概念,包括命中测试和事件。要使用
wx.Graphics
类实现这一点,需要自己实现很多,因为它实际上只是一个很好的绘图库,抽象级别低于
FloatCanvas
。你可以阅读每一个的演示,以更好地了解它们是关于什么的。