Общий большой вопрос, кажется, состоит в том, как сделать эффективную живопись?
Частичное рисование - хороший способ улучшить производительность, если рисование идет медленно.
Однако сначала докажите, что рисование идет медленно! Если профилирование показывает, что рисование является проблемой, вы можете перейти к частичному обновлению.
Один из подходов заключается в использовании «отслеживания грязных прямоугольников». Это очень широко используемая вещь, и такие термины, как «аннулирование» (область, которая нуждается в перерисовке) и «проверка» (акт рисования грязного бита). Оконная система почти наверняка уже делает это, так что может случиться так, что вы можете воспользоваться этим, например, Java Swing RepaintManager хранит ограничивающий прямоугольник грязной области.
Тем не менее, вы можете легко бросить свой собственный. У вас может быть переменная-член - «регион», или просто список прямоугольников в векторе, или ограничительный прямоугольник - для представления области, которая будет обновлена на следующем рисунке. В вашем конструкторе или обработчиках с измененным размером инициализируйте это для всей области. В любое время, когда вы хотите перерисовать часть панели, аннулируйте эту часть, добавив прямоугольник в грязную область. При рисовании рисуйте только части в грязной области, а затем очищайте грязную область. Частичное рисование таким образом хорошо работает, например, с буферизованными изображениями. Легко!