The three remaining brush classes are ImageBrush, DrawingBrush, and VisualBrush. In theory, these brushes have quite a bit of overlapping functionality, but in most real-life applications you'll probably use them for these specific purposes:
ImageBrush for brushes based on bitmaps
DrawingBrush for brushes based on vector drawings
VisualBrush for brushes based on visual objects, including user-interface elements and controls
ImageBrush defines only one property: The ImageSource property is of type ImageSource, which is the abstract class from which BitmapSource and DrawingImage descend. BitmapSource is the abstract class from which all the bitmap classes descend.
DrawingBrush also defines just one property: The Drawing property, which is ...