用于图形应用程序的快速,像素精度2D绘图API?

时间:2008-09-15 21:10:09

标签: graphics drawing 2d

我想创建一个跨平台的绘图程序。编写我的应用程序的一个要求是我在画布上具有像素级精度。例如,我想编写自己的线条绘制算法,而不是依赖别人。我不想要任何形式的抗锯齿(再次,需要像素级控制。)我希望屏幕上的用户交互能够快速响应(等待我编写快速算法的能力。)

理想情况下,我想用Python编写它,或者将Java作为第二选择。能够轻松制作最终应用程序跨平台是必须的。只要我可以在它们周围写一个抽象层,我会在必要时提交不同的OS上的不同的API。有什么想法吗?

附录:我需要能够在屏幕上绘制 。绘制出一个我已经弄明白的文件。

5 个答案:

答案 0 :(得分:3)

我本周刚将一些幻灯片和演示代码放在一起,使用图书pyglet从python中使用OpenGL进行2D图形处理。你可以在这里看到我的东西:http://tartley.com/?p=378

速度非常快(相对而言,对于python而言)我已经成功地获得了大约1,000个独立定位和定向的对象在屏幕上移动,每个对象有大约50个顶点。

它非常便携,我在这个环境中编写的所有代码都适用于Windows,Linux和Mac(甚至像Pypy这样的模糊环境),而我无需考虑它。

更新:同一主题上还有一些较新的帖子:http://tartley.com/?cat=27

答案 1 :(得分:2)

Python的Pyglet库可能适合您的需求。它允许您使用OpenGL,一种跨平台的图形API。您可以禁用消除锯齿功能并将屏幕区域捕获到缓冲区或文件中。此外,您还可以使用其事件处理,资源加载和图像处理系统。您也可以将它绑定到PIL(Python图像库),绝对是开罗,一个流行的跨平台矢量图形库。

我提到Pyglet而不是纯PyOpenGL,因为Pyglet透明地处理了许多丑陋的OpenGL内容而不需要你付出任何努力。

我和朋友正在使用Pyglet制作绘图程序。有一些怪癖 - 例如,OpenGL总是在OS X上进行双缓冲,因此我们必须绘制两次,一次用于当前帧,另一次用于另一帧,因为只要显示刷新,它们就会被翻转。您可以查看我们当前的进度in this subversion repository。 (主干中的Splatterboard.py是您要运行的文件。)如果您没有使用svn,我很乐意通过电子邮件向您发送最新来源的.zip。如果你研究一下,可以随意窃取代码。

答案 2 :(得分:1)

如果语言选择已打开,则使用Haxe创建的Flash文件可能占有一席之地。 Haxe是免费的,是一种完整的动态编程语言。然后是相关的Neko,一个在Mac,Windows和Linux上运行的虚拟机(如Java,Ruby,Parrot ......)。在某些方面是一种新的改进形式的Flash,自然它可以绘制东西。 http://haxe.org/

答案 3 :(得分:0)

如果您想使用C ++,QT的Canvas和QPainter非常适合这项工作。它是跨平台的。

QT有一个python绑定,但我从未使用它。

至于Java,使用SWT,画布的像素级操作有点困难和缓慢,所以我不推荐它。另一方面,Swing的Canvas非常好并且反应灵敏。我从未使用过AWT选项,但你可能不想去那里。

答案 4 :(得分:0)

我建议wxPython

它是精美的跨平台,您可以获得每像素控制,如果您改变主意,可以将其用于pyglet或agg等库。

您可以在docs和demos下载中找到一些有用的示例。