Да, это очень хорошая практика для подражания. Вы не платите много за производительность (по сравнению с реальной операцией покраски), и вы спасаете себя от горя, если вы делаете необычные изменения в графическом контексте. Однако не переусердствуйте, например, вам не нужно беспокоиться о настройках цвета.
Альтернатива состоит в том, чтобы ничего не предполагать в отношении графического контекста и устанавливать все необходимые свойства перед каждой картиной, если они настроены на что-то непонятное. Старайтесь избегать свободного создания и утилизации графических объектов для каждой операции.
Определенные свойства, которые вы всегда должны восстанавливать, если были изменены: (потому что они могут делать плохие вещи и иметь непредвиденные последствия):
- Преобразование - потому что модификации этого будут накладываться друг на друга и их будет очень и очень трудно сбросить. Осторожно: это модифицируется методами преобразования, сдвига, масштабирования, поворота и преобразования в Graphics2D. Модифицирующие преобразования должны использоваться с ОСТОРОЖНОМ.
- Stroke - потому что (по крайней мере, в моей конфигурации) оставление этого значения по умолчанию выполняется намного быстрее, чем любой параметр , даже если он эквивалентен значению по умолчанию. Не спрашивайте - это результат того, что графические конвейеры Java2D ускоряют процесс по умолчанию с использованием графического оборудования.
- Клип: приведет к странным ошибкам, когда рисует только часть экрана.
- Составной: большинство операций, вероятно, не ожидают, что это будет что-то странное.
Свойства, о которых не стоит беспокоиться:
- RenderingHints. Это те вещи, которые вы можете легко установить и восстановить, и, как правило, вы хотите оставить их настроенными определенным образом (сглаживание и т. Д.) На все время работы приложения. Изменение RenderingHints редко нарушает рендеринг компонентов, хотя это может сделать его более уродливым.
- Цвет фона и цвет краски. Большинство вещей изменят их перед тем, как рисовать.
- Шрифт: аналогично.