首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何才能绘制Java2D模拟的一部分,而不是更改为图像/缓冲区,这样我就不必每次都重新绘制它的基元?

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

Stack Overflow用户
提问于 2009-10-25 10:11:05
回答 2查看 205关注 0票数 0

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

我的Java2D模拟的一部分需要我绘制成千上万条小线。然而,应用程序的这一部分一旦绘制就不会改变,所以每次循环迭代(进行活动渲染)重新绘制数千个基元是没有意义的。

那么,我应该使用什么对象来绘制并保存它,然后允许我简单地将整个图像绘制到我的画布上,然后在它上面绘制哪些变化?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-25 10:29:47

可以先绘制到BufferedImage,然后再将BufferedImage的内容绘制到Swing组件,如JPanel

为了绘制到BufferedImage,可以使用createGraphics来获取图像的Graphics2D上下文:

代码语言:javascript
代码运行次数:0
运行
复制
BufferedImage img = new BufferedImage(width, height, type);
Graphics2D g = img.createGraphics();
// do drawing using the Graphics2D object.
g.dispose();

然后,通过覆盖paintComponent方法将BufferedImage的内容绘制到JPanel

代码语言:javascript
代码运行次数:0
运行
复制
public void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawImage(img, 0, 0, null);  // Draw img onto the JPanel.
}
票数 3
EN

Stack Overflow用户

发布于 2009-10-25 23:43:15

请注意,您还应该重写getPreferredSize()以返回图像的大小,或者在JPanel上设置与图像大小相等的首选大小。如果不这样做,您的JPanel子类就会出现布局问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1619751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档