代码之家  ›  专栏  ›  技术社区  ›  zeus300

绘制对称qgraphicsrectitem的最智能方法

  •  0
  • zeus300  · 技术社区  · 7 年前

    我正在编写一个GUI,它应该在2D坐标系中显示系统的实体,用户可以选择并拖动。该系统是镜像对称的w.r.t.x和y轴。目前,我正在使用qgraphicsrecitem对一个实体进行子类化,以便可以在坐标系的第一个象限(x>0,y>0)中拖动它。我重新实现了绘制方法,用painter绘制了另外三个矩形。drawRectangle()。因此,当我移动象限1中的实体时,其他三个象限中的元素执行镜像运动。这很有效。

    An entity and its symmetry partner in the other three quadrants. The entity can be subdivided, and that needs to be extended to the other three partners.

    在下一阶段中,每个实体可以细分,即由数百个矩形组成。所以我需要绘制数百个矩形,四次,用镜像操作。这种简单的方法需要四个for循环,但我想知道在QT中是否有更聪明的方法来实现这一点。for循环有点疼,因为我使用的是PyQt。

    1 回复  |  直到 7 年前
        1
  •  1
  •   dtech    7 年前

    如果绘制操作非常慢,那么最简单的方法就是绘制图像,然后简单地从图像中绘制缓存的绘制4次,这将非常快,因为它只会复制一些像素值。

    不基于项目缓存图形结果,而是缓存网格的一个象限可能更有效。这样,如果你放大,项目数量变得巨大或众多,你就不会浪费大量内存,相反,你只需要一个图像缓存,即象限的屏幕大小。