首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止JPanel在重绘()调用中重绘背景

防止JPanel在重绘()调用中重绘背景
EN

Stack Overflow用户
提问于 2016-11-18 18:38:36
回答 2查看 722关注 0票数 0

一些动画(例如一些gif文件)只存储在每个帧中的像素,这些像素与上一帧相比发生了变化。要正确绘制这些动画,您必须先绘制第一个框架,然后在上面绘制后续的框架,而不删除前面的框架。然而,JPanels在调用redraw ()时总是重新绘制背景,擦除前面的帧。是否有办法防止JPanel重新绘制背景?有人告诉我,在JPanels paintComponent(Graphics g)方法中调用JPanelspaintComponent(Graphics g)是用来重画背景的,但是我试着注释掉它,这会导致一些奇怪的行为,所以我假设它不仅仅是重新绘制背景。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-18 18:56:39

我建议在API提供的已经存在的代码基础上构建您的代码,而不是破坏它。只需将图像存储为BufferedImage即可。这允许您使用ImageIcon显示它,因此这是一种额外的简化。这使您可以使用API更新单个像素,而不需要任何麻烦。如果您绝对坚持将JPanel排除在重绘例程之外,这个问题可能会有所帮助。

一般而言:

遵循API的常规用法。如果要永久存储图像的数据,请使用BufferedImage。每次更新框架时,JComponents都应该被完全覆盖。

票数 3
EN

Stack Overflow用户

发布于 2016-11-18 21:27:26

根据您的确切需求,有两种常见的方法:

  1. 在BufferedImage上绘制,然后显示BufferedImage
  2. 在每次调用ArrayList ()时,保留要绘制和绘制列表中所有对象的对象的paintComponent。

有关每种方法的更多信息和工作示例,请查看定制绘画方法

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

https://stackoverflow.com/questions/40683962

复制
相关文章

相似问题

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