Difference between Color and SolidColorBrush clarification

From the Remarks section in Brush:

A Brush "paints" or "fills" an area with its output. Different brushes have different types of output. Some brushes paint an area with a solid color, others with a gradient, pattern, image, or drawing. The following list describes the different types of WPF brushes:

•SolidColorBrush: Paints an area with a solid Color.

•LinearGradientBrush: Paints an area with a linear gradient.

•RadialGradientBrush: Paints an area with a radial gradient.

•ImageBrush: Paints an area with an image (represented by an ImageSource object).

•DrawingBrush: Paints an area with a Drawing. The drawing may include vector and bitmap objects.

•VisualBrush: Paints an area with a Visual object. A VisualBrush enables you to duplicate content from one portion of your application into another area; it's very useful for creating reflection effects and magnifying portions of the screen.


Color is a component of SolidColorBrush and one of it constructor has Color-type parametr. If you want to fill some components on the forms first you need to create color and after create SolidColorBrush based on that color which you was created earlier. It's like a real clear brush and color palette, where you need to soak the brush for painting/filling something. Color object is more "low-level" and you can set some color with A, R, G, B-parameters. And SolidColorBrushes is a type of brushes for filling object (inheritance from System.Windows.Media.Brush). You can combine colors in one Brush.


My understanding is the following.

  • Color represents a specific color { red, blue, … } etc.
  • SolidColorBrush represents specific Color and the ability to use the color to paint an area.
  • Color is a struct data type that holds the details of color.
  • SolidColorBrush is a class that holds Color objects and adds Opacity and transformation properties.
  • Colors list pre-set number of colors. Color c = Colors.Red;
  • Brushes Lists pre-set number of Brushes. SolidColorBrush br = Brushes.Red;