swing使用java中的StdDraw有没有办法更快地进入屏幕?
我正在使用来自https://introcs.cs.princeton.edu/java/stdlib/StdDraw.java
的StdDraw库。据我所知,它只是实现了一个简单的界面,用于使用JFrame绘制屏幕
在我的实现中,我只是有一个2d像素阵列,我画的每个像素都是这样的:
StdDraw.clear()
for (int y = 0; y < Engine.HEIGHT; y += 1) {
for (int x = 0; x < Engine.WIDTH; x += 1) {
map[x][y].draw((float) x / Engine.WIDTH, (float) y / Engine.HEIGHT);
}
}
然而,这是非常缓慢的。就像疯狂的慢。更不用说每次我想更新的时候都要重新绘制整个屏幕
我清除屏幕,然后重新绘制每个像素。这是不可能的,但我真的不知道该去哪里找。一些关于我应该注意什么的建议真的很有帮助
# 1 楼答案
这不是最终的答案,而是将一些可测量的代码放到桌面上的一种方式
BufferedImage
是一个不错的选择,但在我不太快的系统上作为参考,这段代码需要5秒来绘制4000万像素,即每百万像素125毫秒。你有多少像素?!?这段代码使用对line
的调用作为绘制单像素的代理,因为该类不提供单像素绘制,但从理论上讲,像您这样绘制实际像素的代码应该更快你的
map
是哪门课有多少像素
什么时间是“疯狂的慢”