Скажите, что у меня есть кнопка и вы хотите изменить кнопку фона на градиент, лучше/быстрее рисовать градиент используя Java2D или просто получить изображение с этим градиентом и поместить его в фоновом режиме кнопки?Лучше/быстрее рисовать изображение в качестве фона кнопки или использовать Java2D для его рисования
Лучше/быстрее рисовать изображение в качестве фона кнопки или использовать Java2D для его рисования
ответ
Лучший ответ: измерить его и посмотреть.
Реалистичный ответ: Не имеет значения. Частота обновления экрана обычно является более важным фактором.
Наилучшее решение: используйте некоторую форму двойной буферизации, чтобы сделать вопрос несущественным.
Я согласен, что важно измерить его и посмотреть. По моему опыту, рисование градиента, вероятно, будет медленнее, чем рисование изображения. Однако, если вы говорите только о маленькой кнопке, это может не сделать достаточной разницы, чтобы беспокоиться. Есть несколько уловок, чтобы ускорить градиенты. Например, вы можете нарисовать его в BufferedImage, и всякий раз, когда вам нужно нарисовать свой градиент, используйте вместо этого новый градиент g.drawImage (Image img, int x, int y, ImageObserver observer). Более того, если ваш градиент находится прямо вверх и вниз, вы можете сохранить градиент в BufferedImage шириной в 1 пиксель. Затем вы можете нарисовать градиент по всей ширине фона, используя g.drawImage (изображение img, int x, int y, int width, int height, наблюдатель ImageObserver).
Однако, беспокоиться о том, что происходит быстрее, обычно бессмысленно, хотя если вы берете 1 миллисекунду, а другой занимает 0,1 миллисекунды (если вы не пытаетесь назвать это 1000 раз в секунду, конечно). Для получения дополнительной информации я бы рекомендовал книгу Filthy Rich Clients, особенно главы 4, 5 и 7.