Я решил очень похожую проблему, используя DrawingGroup
и добавляя или удаляя Drawing
объекты из DrawingGroup
, поскольку их либо нужно было отобразить, либо скрыть. Ключ заключается в том, чтобы организовать ваши Drawing
объекты таким образом, чтобы ими было легко управлять, и чтобы понять, как добавлять и удалять их из DrawingGroup
.
Помните, что вы хотите добавить и удалить объекты Drawing
из DrawingCollection
, предоставляемого свойством DrawingGroup.Children
. Поэтому используйте DrawingGroup.Children.Add()
или другие DrawingCollection
методы: Insert
, Remove
, RemoveAt
, Clear
. Вам нужно будет сохранить внешний список Drawing
объектов, которые вы добавляете / удаляете в DrawingGroup
, чтобы сделать это успешно.
Я использовал эту технику, чтобы добиться большого эффекта, нарисовав изображение (растровое изображение) в первом дочернем элементе в моем экземпляре DrawingGroup
, а затем добавив и удалив объекты Drawing
в этот экземпляр DrawingGroup
для наложения многоугольников, контуры, текст и т. д. поверх рисунка.
Я "рисую" или "стираю" изображение, добавляя или удаляя Drawing
объекты к экземпляру DrawingGroup
. DrawingGroup
обрабатывается как один Drawing
, поэтому любое масштабирование, панорамирование или другие манипуляции будут влиять на все Drawing
объекты в пределах DrawingGroup
.