лучше / быстрее рисовать изображение в качестве фона кнопки или использовать Java2D, чтобы нарисовать его - PullRequest
3 голосов
/ 03 сентября 2010

Скажем, у меня есть кнопка и я хочу изменить фоновую кнопку на градиент, лучше / быстрее рисовать градиент с помощью Java2D или просто получить изображение с этим градиентом и поместить его в фон кнопки?

Ответы [ 3 ]

1 голос
/ 03 сентября 2010

Лучший ответ: измерить и посмотреть.

Реалистичный ответ: Не имеет значения.Частота обновления экрана обычно является более важным фактором.

Лучшее решение: используйте некоторую форму двойной буферизации, чтобы сделать вопрос неактуальным.

1 голос
/ 03 сентября 2010

Единственный способ определить, быстрее ли что-то, - это измерить его.Поскольку изменение цвета фона кнопки зависит от ее внешнего вида, мне нравится реализовывать интерфейс Icon для украшения кнопки, как предлагается в этом примере .

0 голосов
/ 14 сентября 2010

Я согласен, что важно измерить это и увидеть.По моему опыту, рисование градиента, вероятно, будет медленнее, чем рисование изображения.Однако, если вы говорите только о маленькой кнопке, это может не иметь большого значения для беспокойства.Есть несколько приемов для ускорения градиентов.Например, вы можете нарисовать его в BufferedImage и всякий раз, когда вам нужно нарисовать ваш градиент, используйте g.drawImage (Image img, int x, int y, ImageObserver наблюдатель) вместо создания нового градиента.Более того, если ваш градиент направлен вверх и вниз, вы можете сохранить градиент в BufferedImage шириной 1 пиксель.Затем вы можете нарисовать градиент по всей ширине фона, используя g.drawImage (Image img, int x, int y, int width, int height, наблюдатель ImageObserver) .

Однако беспокоиться о том, что быстрее, обычно бессмысленно, если одна занимает 1 миллисекунду, а другая - 0,1 миллисекунды (если, конечно, вы не пытаетесь вызывать ее 1000 раз в секунду).Для получения дополнительной информации я бы порекомендовал книгу «Грязные богатые клиенты», особенно главы 4, 5 и 7.

...