Java - Пользовательская производительность объявления краски - PullRequest
1 голос
/ 02 декабря 2011

Быстро да, нет, или это не имеет значения:

Я переопределяю метод рисования для абстрактной кнопки, и мне интересно, если делать

GradientPaint gp = new GradientPaint(0, 0, color1, 0, h, color2);
RoundRectangle2D r = new RoundRectangle2D.Float(0, 0, w, h, w/5, h/5);

и подобные методы будут влиять на производительность против

GradientPaint gp;
RoundRectangle2D r;

снаружи краска, а затем

gp = new GradientPaint(0, 0, color1, 0, h, color2);
r = new RoundRectangle2D.Float(0, 0, w, h, w/5, h/5);

внутри метода окраски

Ответы [ 3 ]

4 голосов
/ 02 декабря 2011

Используйте их один раз или при необходимости (например, изменение размера), а не много раз.

4 голосов
/ 02 декабря 2011

Как дела, Джереми?

Не то, что вы спрашиваете, но скорее всего будет сделать рисование один раз в BufferedImage, а затем отобразить BufferedImage в краске (или, возможно, лучше paintComponent) метод.

2 голосов
/ 02 декабря 2011

Выберите наиболее приемлемое решение, пока не измерите проблемы: -)

Каждая «оптимизация» требует дополнительной логики (иначе: LOC).Каждая дополнительная строка имеет - трудно прогнозируемую - цену обслуживания.Мое общее правило - не добавлять неисчислимые затраты.

Кстати: вы все равно не можете сделать свой первый вариант, градиенты неизменны - поэтому вам придется пересоздавать каждый раз, когда размер меняется.

...