Я действительно зависит от того, что вы рисуете. Если вы нарисуете что-то, что перекрашивается только в результате взаимодействия с пользователем, вы можете забыть о проблемах с производительностью и создавать все графические объекты, то есть, когда это необходимо.
Убедитесь, что вы Dispose()
все, что вам нужно в вашей графике. Ручки, кисти, регионы, шрифты. Все они являются объектами GDI и связаны с системой дескрипторами GDI.
Если вам нужна графика, которая каким-то образом анимируется или будет меняться во времени без щелчка пользователем, подготовьте все свои графические объекты впереди и используйте их как можно чаще. Здесь можно применить правило, которое заключается в том, что лучше тратить память, чем миллисекунды при рисовании каждого кадра анимации.
И, наконец, по крайней мере, для этого поста - не забудьте использовать двойную буферизацию, либо в автоматическом режиме в .net Control, либо в стиле «сворачивайте свой собственный задний план».
Развлекайся GDI-ing:)