Как оптимизировать отрисовку непрозрачного компонента, если он не занимает всю прямоугольную область?

У меня есть компонент, метод отрисовки которого выглядит примерно так:

public void paintComponent(Graphics g){
    Graphics2D g2=(Graphics2D)g;
    g2.setPaint(new RadialGradientPaint(getWidth()*3/4,getHeight(),getWidth(),f,c1));
    g2.fillRoundRect(getWidth()/100,getHeight()/100,getWidth()*49/50,getHeight()*49/50,getHeight()/10,getHeight()/10);
}

Понятно, что он непрозрачен и перерисовывать его родителей не нужно, поскольку новая отрисовка закрасит всё, что было нарисовано предыдущей. С другой стороны, отметить его инструкцией setOpaque(true) нельзя, поскольку тогда он должен заполнять всю прямоугольную область (getBounds()).

If true the component paints every pixel within its bounds. Otherwise, the component may not paint some or all of its pixels, allowing the underlying pixels to show through.

Таким образом, оптимизация, кажется, "сама напрашивается", но способа реализовать её встроенными средствами я не вижу. Пожалуйста, объясните, как её применить (если это возможно).


Ответы (0 шт):