我目前正在做一个项目,要求我在屏幕上绘制大量(100+)图像。每幅图像的原始分辨率为20 * 20,我在绘制之前将它们与最近邻居缩放到80 * 80。
我目前使用AffineTransform在初始化程序时对其进行缩放,并在不同位置的每一帧重绘放大的图像。
看到目标帧速率约为60 fps,我需要找到一种更快地绘制它们的方法,最好不要将它们渲染为80 * 80位图。我尝试使用带有width和height参数的Graphics2D的drawImage方法,但它实际上减慢了我的程序。
在伪代码中:
Image image; //loaded from 20*20 png file
public void init(){
image = resize(image, 80, 80);
}
public void repaint(Graphics g){
g.drawImage(image, 0, 0, null);
}
我也尝试过:
Image image;
public void repaint(Graphics g){
((Graphics2D)g).setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
g.drawImage(image, 0, 0, 80, 80, null);
}
我的问题有解决方案吗?