В основном я рисую много прозрачных JPanels; Профилирование показывает, что большая часть времени проводится в Component.paint (). Можно было бы оптимизировать это довольно радикально, поскольку в большинстве случаев реальная непрозрачная область на JPanel довольно мала, например, по краям.
В нынешнем виде компонент repainting () будет инициировать перерисовку всех его родителей, поскольку RepaintManager не может знать, что грязная родительская область фактически непрозрачна и будет подниматься по иерархии компонентов. , Я думал о том, чтобы звонить markCompletelyClean()
всем родителям всякий раз, когда панель становится недействительной, и сам управлять грязными областями с помощью addDirtyRegion()
.
Однако, существует ли более четкий подход к маркировке только определенных прямоугольников JPanel как непрозрачных (или прозрачных, не имеет значения)?