java - 如何创建 Canvas 上绘制内容的缓冲图像?

标签 java

我有一个 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/

相关文章:

java - 在 OnClick 方法外部传递 int 的值

java - 从自定义类加载器中添加或删除特定的 jar

java - 从导出的 Jar 执行时未找到 jdbc 驱动程序

java - 如何在 Retrofit Response<List<Object>> 中访问对象的方法

c# - Java 和 C# 中 double 值的低级实现

Java ClassCastException 具有不同包中的两个相同的类,通过网络发送

java - intellij 内部出现不满意的链接错误

java - 如何为 Jasper 报告下载设置名称?

java - 使一个物体避开另一物体

java - 将元素从一个 ArrayList 移动到另一个