首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Swing中组合重绘?

如何在Swing中组合重绘?
EN

Stack Overflow用户
提问于 2009-08-10 18:58:37
回答 5查看 975关注 0票数 3

我从一个侦听器调用了一堆重绘,但是我设计我的画图函数的方式只需要一个重绘。我生成了一堆重绘,因为它挂到了我的鼠标运动监听器中。

有没有办法取消某个组件的所有挂起的重绘?我不能忽略重绘,因为有些是有效的,比如当你调整框架大小或从最小化恢复它时。

我为什么要关心呢?因为我的绘制代码很重,而且我不能在非常高的FPS下进行完整的重绘。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-08-10 19:09:28

Swing将为您组合重绘:参见Sun网站上的"Painting in AWT and Swing"。如果您计划快速连续地进行多次重绘,它们将合并到一个对paintImmediately()的调用中。

票数 2
EN

Stack Overflow用户

发布于 2009-08-10 19:08:51

频繁的重绘请求会自动合并为一个请求。优化这一点的最好方法不是重新绘制整个对象,而是使用特定区域的坐标调用repaint。这意味着你只需要重新绘制实际改变的区域。

票数 2
EN

Stack Overflow用户

发布于 2009-08-10 19:08:43

我的理解是,repaint()只是通过将组件的一个区域添加到重绘队列来调度重绘。如果已经在组件上请求了重绘,则新的重绘区域将仅与先前请求的区域联合。在处理完事件队列中的所有其他事件之前,实际上不会执行重绘。所以,你额外的重绘可能不会有太大的不同,即你的绘画代码只会被执行一次。参见JComponent.repaintRepaintManager.addDirtyregion

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

https://stackoverflow.com/questions/1256601

复制
相关文章

相似问题

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