我找不到任何答案。我试图在Java中使用循环中的活动绘画。我创建了一个新的BufferedImage
,并在我的paint方法中获取其图形,绘制其图形正常Image
以及各种形状,如fillRect() etc.
然后我将BufferedImage
绘制到{{ 1}}(带有变量名称 canvas )图形。
JPanel
为什么我在JPanel中看到所有绘制的形状,但是没有Image,只有延迟,我认为首先将所有内容都绘制到BufferedImage,然后立即在另一个图形上绘制(不是什么缓冲区?) 。有人可以向我解释一下吗?什么线程应该在图形对象上绘制东西?其中此图像绘制正在运行(使用活动渲染时,不调用paintComponent())
答案 0 :(得分:0)
什么线程应该在图形对象上绘制东西?
你想要的任何线程。我不久前写了一个GIS应用程序,我不得不做这种操作(绘制图像和形状并显示它们)。以下是我的进展:
BufferedImage
JPanel.paintComponent()
中获取后台线程的结果并将其绘制到JPanel的图形中运行这段代码
canvas.getGraphics().drawImage(buffer, 0, 0, 500, 500, null);
paintComponent
之外的确实是一个坏主意,可能会解释您遇到的问题。这是因为您从canvas.getGraphics()
获得的图形不适用于渲染,但仅适用于打印等操作
你绝对应该在BufferedImage
方法中绘制JPanel.paintComponent()
,以解决很多问题