代码之家  ›  专栏  ›  技术社区  ›  Alex Gaynor

用于几何图形的python画布库[关闭]

  •  4
  • Alex Gaynor  · 技术社区  · 16 年前

    我正在寻找一个python库,用于创建用于操纵几何图形的画布。具体来说,我需要创建任意多边形并将其放置在画布上的能力,多边形需要透明/具有alpha通道的能力,我需要能够编辑当前画布上的多边形,我需要能够获得给定像素的实际颜色el(所有透明块的集合)。

    基本上我是想说: http://alteredqualia.com/visualization/evolve/ 在蟒蛇中。

    8 回复  |  直到 7 年前
        1
  •  5
  •   Iain    16 年前

    我想 cairo 会做很多你想做的事。他们有 python bindings 也是。

    一个对你没有帮助的要求是修改以前绘制的多边形,但是我不知道有什么画布可以帮你做到这一点。

        2
  •  2
  •   Matt Razza    16 年前

    听起来像是一份工作 OpenGL .

    我的建议是,无论选择哪种库,都要为多边形创建一个适合算法的数据结构,以便它们更简单、更可读,而不是试图让这些算法直接操作画布。然后,您可以编写将它们与主逻辑分开(即独立)的代码。

        3
  •  2
  •   Community CDub    7 年前

    This discussion on Stackoverflow 在各种用于python的gui工具包上有一些比较和代码片段。我很确定 QGraphicsView QT 会有透明度。诺基亚(nee troll)为qt制作了一个演示套件,可以让您了解它的功能。

        4
  •  1
  •   Alex KeySmith    16 年前

    尝试 pyglet . 它是一个带有opengl的python图形库。如果你以前做过opengl编程,那么它无疑是获得你想要的东西的最简单的方法。

        5
  •  1
  •   llimllib    16 年前

    我相信html画布允许您修改元素

    不是的。你可以看看我的 HTML canvas tutorial 看你如何画一个移动的球;你擦去屏幕,在你想要的地方画一个新的圆圈。

    您可以在pyglet、pygame、qt、tkinter、wxpython和cairo的画布上绘制简单的形状。

    通常,您会有称为“sprite”或“shapes”的对象来表示绘制到屏幕上的对象,并将它们全部存储在一个容器中。然后库或框架将在每一帧将它们全部呈现到画布上。因此,在用户(你)看来,你可以修改屏幕上的对象;你设置一个球的x和y坐标,在下一帧中,球在那里被渲染。然而,在一个较低的水平上,一切都被抹去,重新绘制。

    对于计算密集型动画,一种称为 double-buffering 将使用内存中的位图而不是屏幕上的位图进行修改,然后绘图过程将简单地将该位图复制到屏幕上。

    更改列表中的项,然后创建一个新画布,这似乎会有很大的开销。

    上面提到的所有框架都将为要绘制的对象列表提供一个很好的抽象,这样您就不需要手动维护它,并且您可以编写程序,就好像您绘制的精灵/形状可以直接在屏幕上移动一样,即使它们真的不在较低的级别。

        6
  •  1
  •   templatetypedef    7 年前

    Pygame 应该能为你做到这一点。

    请参见pygame.draw.polygon

        7
  •  0
  •   Alex Gaynor    16 年前

    我相信html画布允许您修改元素,这使我相信可能还有另一个画布也可以。但是,如果没有,基本上需要我保留一个所有多边形的单独列表,当我想做一个更改时,更改列表中的项,然后创建一个新画布,这似乎会有很大的开销。

        8
  •  0
  •   klozovin    16 年前

    qt和wxwidgets都有一些画布绘制功能(qt称之为graphicsview)。快速的谷歌搜索会给你提供很多例子,这样你就可以看到它是否符合你的要求。