我有一个 Canvas ,我在上面添加原始形状,如正方形、圆形等。是否可以以缓冲图像的形式在 Canvas 上绘制内容。
我实际上的目标是从 Canvas 访问单个像素,但找不到更好的方法来做到这一点?
最佳答案
尝试这种方法:
1.) Create a bufferedimage the width and height of the canvas
2.) Create a graphics2D object from the new bufferedimage
3.) Use the paint(g2d) or paintall(g2d) method of your canvas object
所以你有这样的东西:
BufferedImage myBI = new BufferedImage(myCanvas.getWidth(), myCanvas.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g = myBI.createGraphics();
myCanvas.paint(g);
您的 Canvas 现在应该被绘制到缓冲图像中。
是否从 Canvas 绘制到缓冲图像或从缓冲图像绘制到 Canvas 的问题与速度和图像质量有关。绘制到缓冲图像比绘制到 Canvas 更快,但如果您只是对静态图像执行此操作,则这可能并不重要。但您可能还会注意到图像质量的差异。我已将 jpanels 打印到缓冲图像,然后打印到 jpg 文件,并注意到图像质量下降。
关于java - 如何创建 Canvas 上绘制内容的缓冲图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20476291/