gpt4 book ai didi

java - 有没有办法只将特定的 JPanel 区域标记为不透明?

转载 作者:搜寻专家 更新时间:2023-11-01 02:31:34 26 4
gpt4 key购买 nike

基本上我画了很多透明的 JPanel;分析显示大部分时间花在了 Component.paint() 上。可以从根本上对其进行优化,因为在大多数情况下,每个 JPanel 的真正非不透明区域非常小,例如在边缘周围。

就目前而言,repainting() 一个组件会触发对其父级所有的重绘,因为 RepaintManager 不知道脏父级区域实际上是不透明的并且会上升到组件等级制度。我正在考虑在面板无效时对所有父级调用 markCompletelyClean() 并使用 addDirtyRegion() 自己管理脏区域。

但是,是否有更简洁的方法将 JPanel 的特定矩形标记为不透明(或透明,无关紧要)?

最佳答案

即使您使用 markCompletelyClean() 和 addDirtyRegion() 做了一些花哨的事情,我怀疑您是否会获得很大的性能优势。当 swing 进行重绘时,它会整理所有要绘制的脏区域,并使用所有脏区域的最小边界框开始重绘。因此,如果您将 JPanel 的周边标记为脏,则 JPanel 的边界框与整个 JPanel 相同,这意味着您将以任何方式重新绘制整个事物。

关于java - 有没有办法只将特定的 JPanel 区域标记为不透明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8175615/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com