【问题标题】:WxPython zooming techniqueWxPython 缩放技术
【发布时间】:2016-09-05 16:20:57
【问题描述】:

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

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

对不起,如果我的问题太理论。但我觉得我需要该地区的帮助。提前致谢。

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

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

【问题讨论】:

    标签: python wxpython zooming


    【解决方案1】:

    是的,根据您的描述FloatCanvas 肯定会满足您的需求。

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

    【讨论】:

    • 我的绘图也将是交互式的。就像创建的矩形将用作按钮。我读到FloatCanvas 可以提供这个。这也可以通过wx.GraphicsContext 实现吗?
    • 是的,但FloatCanvas 在这种情况下会是更好的选择,因为它已经为您实现了独立形状对象等更高级别的概念,包括命中测试和事件。要使用wx.Graphics 类做到这一点,需要您自己实现很多,因为它实际上只是一个不错的绘图库,抽象级别低于FloatCanvas。您可以阅读每个示例的演示,以更好地了解它们的含义。
    猜你喜欢
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    相关资源
    最近更新 更多