一些动画(例如一些gif文件)只存储在每个帧中的像素,这些像素与上一帧相比发生了变化。要正确绘制这些动画,您必须先绘制第一个框架,然后在上面绘制后续的框架,而不删除前面的框架。然而,JPanels在调用redraw ()时总是重新绘制背景,擦除前面的帧。是否有办法防止JPanel重新绘制背景?有人告诉我,在JPanels paintComponent(Graphics g)方法中调用JPanelspaintComponent(Graphics g)是用来重画背景的,但是我试着注释掉它,这会导致一些奇怪的行为,所以我假设它不仅仅是重新绘制背景。
发布于 2016-11-18 18:56:39
我建议在API提供的已经存在的代码基础上构建您的代码,而不是破坏它。只需将图像存储为BufferedImage即可。这允许您使用ImageIcon显示它,因此这是一种额外的简化。这使您可以使用API更新单个像素,而不需要任何麻烦。如果您绝对坚持将JPanel排除在重绘例程之外,这个问题可能会有所帮助。
一般而言:
遵循API的常规用法。如果要永久存储图像的数据,请使用BufferedImage。每次更新框架时,JComponents都应该被完全覆盖。
发布于 2016-11-18 21:27:26
根据您的确切需求,有两种常见的方法:
有关每种方法的更多信息和工作示例,请查看定制绘画方法。
https://stackoverflow.com/questions/40683962
复制相似问题