If I have a DrawingVisual in WPF with Opacity=0, is that enough for it not to be drawn? We have hundreds of DrawingVisuals on a Canvas, and are currently setting Opacity=0 o
I solved a very similar problem by using a DrawingGroup and adding or removing Drawing objects from the DrawingGroup
as they either needed to be displayed or hidden. The key is to organize your Drawing
objects in such a way that they are easy to manage and to understand how to add and remove them from the DrawingGroup
.
Remember that you want to add and remove the Drawing
objects from the DrawingCollection exposed by the DrawingGroup.Children property. So use DrawingGroup.Children.Add() or the other DrawingCollection
methods: Insert, Remove, RemoveAt, Clear. You will need to keep an external list of the Drawing
objects you add/remove to the DrawingGroup
to do this successfully.
I used this technique to great effect by drawing an Image (bitmap) into the first child in my instance of DrawingGroup
and then adding and removing Drawing
objects to this instance of DrawingGroup
in order to layer polygons, paths, text, etc on top of the drawing.
I "draw" or "erase" on the image by adding or removing Drawing
objects to the instance of the DrawingGroup
. The DrawingGroup
is treated as a single Drawing
and so any scaling, panning, or other manipulations will affect all Drawing
objects within the DrawingGroup
.