Т.е. достаточно всего лишь перерисовать на том же самом месте ту же самую фигуру, но уже с другим цветом?Да.
Что если я захочу кроме цвета изменить, допустим, сам прямоугольник, например, скруглить его углы. Для этого я нарисую новую фигуру - прямоугольник со скруглёнными углами, но старый прямоугольник останется и его нескруглённые углы будут видны.Да, будут видны.
Соответственно, если я буду менять цвет не единожды, то цвета будут накладываться друг на друга, и в конце концов это станет заметно.Неверно. При рисовании цвета не накладываются, а заменяются и старый цвет не запоминается, т.к. каждый пиксель — это ячейка в памяти и каждый раз при записи нового значения (цвет) старое перезаписывается.
Что если я захочу кроме цвета изменить, допустим, сам прямоугольник, например, скруглить его углы. Для этого я нарисую новую фигуру - прямоугольник со скруглёнными углами, но старый прямоугольник останется и его нескруглённые углы будут видны. Как быть в таком случае?Стереть старый прямоугольник: если фон — однородный цвет, то просто еще раз его нарисовать в данном цвете, если фон не однородный — то сначала отрисовать фон там, где он был изменен, а уже потом рисовать новую фигуру.
Может быть все-таки есть способ, как обратится к отдельному объекту в DrawingVisual после того как рисование завершилось и изменить его свойства?Самый просто вариант — сделать список объектов, которые отрисовываются в вашем случае. И при необходимости перерисовки их перерисовывать.
Это не веб-приложение.
Самый оптимальный вариант — используя стандартный механизм, как в примере выше. Плюс имеет смысл добавить к файлу контрольную сумму и проверять её после завершения загрузки.