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

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

Fast, Pixel Precision 2D Drawing API for Graphics App?

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

理想情况下,我想用Python或Java作为第二选择。 必须具有轻松使最终应用程序跨平台的能力。 只要有必要,我将提交不同操作系统上的不同API,只要我可以在它们周围编写一个抽象层即可。 有任何想法吗?

附录:我需要在屏幕上绘制的能力。 绘制到文件,我已经弄清楚了。


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

它非常快(相对于python),我设法在屏幕上移动了约1,000个独立定位和定向的对象,每个对象都有约50个顶点。

它非常可移植,我在此环境中编写的所有代码都可以在Windows,Linux和Mac(甚至像Pypy这样晦涩的环境)上运行,而无需我考虑。

更新:关于同一主题也有很多新帖子:http://tartley.com/?cat=27


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

我提到Pyglet而不是纯PyOpenGL,因为Pyglet透明地处理了许多丑陋的OpenGL内容,而您却毫不费力。

我和一个朋友目前正在使用Pyglet进行绘图程序。有一些怪癖-例如,OpenGL在OS X上始终是双缓冲的,因此我们必须将所有内容绘制两次,一次绘制到当前帧,另一次绘制到另一帧,因为每当显示刷新时,它们都会被翻转。您可以在此Subversion存储库中查看我们当前的进度。 (主干中的Splatterboard.py是您要运行的文件。)如果您不打算使用svn,我很乐意通过电子邮件将最新消息的.zip发送给您。如果您愿意的话,可以随时窃取代码。


如果打开了语言选择,则使用Haxe创建的Flash文件可能会存在。 Haxe是免费的,并且是一种完整的动态编程语言。然后是相关的Neko,即虚拟机(例如Java,Ruby,Parrot ...),可在Mac,Windows和Linux上运行。作为某种形式的Flash的新改进形式,它自然可以吸引东西。 http://haxe.org/


我会推荐wxPython

它是一个漂亮的跨平台平台,您可以按像素进行控制,如果您改变主意,可以将其与pyglet或agg之类的库一起使用。

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


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

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

对于Java,使用SWT,画布的像素级操作有些困难和缓慢,因此我不建议这样做。另一方面,Swing的Canvas非常好并且响应迅速。我从未使用过AWT选项,但是您可能不想去那里。


推荐阅读