java - 如何绘制 Java2D 模拟的一部分而不更改为图像/缓冲区,这样我就不必每次都重新绘制它的基元?

标签 java graphics java-2d

如何绘制不会更改为图像/缓冲区的 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();

然后,通过覆盖 paintComponentBufferedImage 的内容绘制到 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/

相关文章:

java - Android 压缩文件

java - 在窗口上打印数字数组

java - 陷入 Java 2D 初学者教程

graphics - 如何转换亚像素精度的图像?

使用 C 在计算机图形学中编码自相似分形

Java 3D游戏编程

Java 交叉口错误

java - 为什么这段代码会跳过文件的第一行?

使用 Apache Mina 的 Java socketserver - 如何设置线程?

Java:避免写入和读取文件