2012-10-23 63 views
1

我想用Swing组件中的一个Java Graphics2D对象手动绘制“东西”,并且当我达到约2000个正方形时,我命令对象绘制它非常慢。Graphics2D绘图性能

我不知道这是否是“常见”。 2000个对象是否真的“很多”? Graphics2D对象的性能不是很好吗?我是否应该停止现在的位置,而在尝试更复杂的东西之前切换到JOGL并且太晚了?

+1

为更好地帮助更快张贴[SSCCE(http://sscce.org/)引起我的问​​题与2000年的对象,短,可运行和编译 – mKorbel

回答

0

我写了一个Java Spirograph GUI,可以在20毫秒或更短的时间内绘制数万个线段。

enter image description here

确保你在其他地方做你的计算在你的应用程序。你的绘图代码应该只做一件事,一件事:绘制。

但是,Graphics和Graphics2D的速度有一个实际限制。这款Spirograph花费了172毫秒来绘制250,000多条线段。

enter image description here

+0

我的计划是重绘整个区域约10每一秒,而我在UI之后的逻辑中计算了很多,然后绘制了每个对象。绘图算法仅在地图的入口集上进行迭代,并将其找到的每个对象都分成25个区块并在屏幕上绘制每个区块。这些对象的“提取”(仅从引用)在绘图算法中可能有点过多的逻辑? – salbeira

+0

@salbeira:每个物体是否有25个瓷砖,或者整个条目是否设置了25个瓷砖?如果每个对象有25个瓦片,有多少瓦片重叠?如果消除重叠,你可以加快速度。 –

+0

没有重叠。它基本上是由minecraft的块启发的chuncking系统。我将一个块保存在一张地图中,检索它并根据它的相对位置绘制它,方法是获取块中的每个对象,并根据该对象的内容绘制一些东西。现在只是一些测试,看看它的工作效果如何。 – salbeira