如何绘制不会更改为图像/缓冲区的 Java2D 模拟的一部分,这样我就不必每次都重新绘制它的基元?
我的 Java2D 模拟的一部分需要我绘制数千条小线。然而,应用程序的这一部分一旦绘制就不会改变,因此每次循环迭代重新绘制数千个图元(进行主动渲染)是没有意义的。
那么,我应该使用什么对象来绘制并保留它,然后允许我简单地将整个图像绘制到我的 Canvas 上,然后在其上绘制发生的变化?
最佳答案
可以抽出 BufferedImage
,然后将 BufferedImage 的内容绘制到 Swing 组件,例如 JPanel
.
为了绘制BufferedImage
,可以使用 createGraphics
获得 Graphics2D
图像的上下文:
BufferedImage img = new BufferedImage(width, height, type);
Graphics2D g = img.createGraphics();
// do drawing using the Graphics2D object.
g.dispose();
然后,通过覆盖 paintComponent
将 BufferedImage
的内容绘制到 JPanel
方法:
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(img, 0, 0, null); // Draw img onto the JPanel.
}
关于java - 如何绘制 Java2D 模拟的一部分而不更改为图像/缓冲区,这样我就不必每次都重新绘制它的基元?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1619751/