DrawingContext Class
Describes visual content using draw, push, and pop commands.
Namespace: System.Windows.Media
Assembly: PresentationCore (in PresentationCore.dll)
The DrawingContext type exposes the following members.
| Name | Description | |
|---|---|---|
![]() | Dispatcher | Gets the Dispatcher this DispatcherObject is associated with. (Inherited from DispatcherObject.) |
| Name | Description | |
|---|---|---|
![]() | CheckAccess | Determines whether the calling thread has access to this DispatcherObject. (Inherited from DispatcherObject.) |
![]() | Close | Closes the DrawingContext and flushes the content. Afterward, the DrawingContext cannot be modified. |
![]() | DisposeCore | Releases all resources used by the DrawingContext. |
![]() | DrawDrawing | Draws the specified Drawing object. |
![]() | DrawEllipse(Brush, Pen, Point, Double, Double) | Draws an ellipse with the specified Brush and Pen. |
![]() | DrawEllipse(Brush, Pen, Point, AnimationClock, Double, AnimationClock, Double, AnimationClock) | Draws an ellipse with the specified Brush and Pen and applies the specified animation clocks. |
![]() | DrawGeometry | Draws the specified Geometry using the specified Brush and Pen. |
![]() | DrawGlyphRun | Draws the specified text. |
![]() | DrawImage(ImageSource, Rect) | Draws an image into the region defined by the specified Rect. |
![]() | DrawImage(ImageSource, Rect, AnimationClock) | Draws an image into the region defined by the specified Rect and applies the specified animation clock. |
![]() | DrawLine(Pen, Point, Point) | Draws a line between the specified points using the specified Pen. |
![]() | DrawLine(Pen, Point, AnimationClock, Point, AnimationClock) | Draws a line between the specified points using the specified Pen and applies the specified animation clocks. |
![]() | DrawRectangle(Brush, Pen, Rect) | Draws a rectangle with the specified Brush and Pen. The pen and the brush can be null. |
![]() | DrawRectangle(Brush, Pen, Rect, AnimationClock) | Draws a rectangle with the specified Brush and Pen and applies the specified animation clocks. |
![]() | DrawRoundedRectangle(Brush, Pen, Rect, Double, Double) | Draws a rounded rectangle with the specified Brush and Pen. |
![]() | DrawRoundedRectangle(Brush, Pen, Rect, AnimationClock, Double, AnimationClock, Double, AnimationClock) | Draws a rounded rectangle with the specified Brush and Pen and applies the specified animation clocks. |
![]() | DrawText | Draws formatted text at the specified location. |
![]() | DrawVideo(MediaPlayer, Rect) | Draws a video into the specified region. |
![]() | DrawVideo(MediaPlayer, Rect, AnimationClock) | Draws a video into the specified region and applies the specified animation clock. |
![]() | Equals(Object) | Determines whether the specified object is equal to the current object. (Inherited from Object.) |
![]() | Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) |
![]() | GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) |
![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() | MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) |
![]() | Pop | Pops the last opacity mask, opacity, clip, effect, or transform operation that was pushed onto the drawing context. |
![]() | PushClip | Pushes the specified clip region onto the drawing context. |
![]() | PushEffect | Obsolete. Pushes the specified BitmapEffect onto the drawing context. |
![]() | PushGuidelineSet | Pushes the specified GuidelineSet onto the drawing context. |
![]() | PushOpacity(Double) | Pushes the specified opacity setting onto the drawing context. |
![]() | PushOpacity(Double, AnimationClock) | Pushes the specified opacity setting onto the drawing context and applies the specified animation clock. |
![]() | PushOpacityMask | Pushes the specified opacity mask onto the drawing context. |
![]() | PushTransform | Pushes the specified Transform onto the drawing context. |
![]() | ToString | Returns a string that represents the current object. (Inherited from Object.) |
![]() | VerifyAccess | Enforces that the calling thread has access to this DispatcherObject. (Inherited from DispatcherObject.) |
![]() | VerifyApiNonstructuralChange | This member supports the WPF infrastructure and is not intended to be used directly from your code. |
| Name | Description | |
|---|---|---|
![]() ![]() | IDisposable.Dispose | This member supports the Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code. |
Use a DrawingContext to populate a Visual or a Drawing with visual content.
Although the DrawingContext draw methods appear similar to the draw methods of the System.Drawing.Graphics type, they function very differently: DrawingContext is used with a retained mode graphics system, while the System.Drawing.Graphics type is used with an immediate mode graphics system. When you use a DrawingContext object's draw commands, you are actually storing a set of rendering instructions (although the exact storage mechanism depends on the type of object that supplies the DrawingContext) that will later be used by the graphics system; you are not drawing to the screen in real-time. For more information about how the Windows Presentation Foundation (WPF) graphics system works, see WPF Graphics Rendering Overview.
You never directly instantiate a DrawingContext; you can, however, acquire a drawing context from certain methods, such as DrawingGroup.Open and DrawingVisual.RenderOpen.
The following example retrieves a DrawingContext from a DrawingVisual and uses it to draw a rectangle.
// Create a DrawingVisual that contains a rectangle. private DrawingVisual CreateDrawingVisualRectangle() { DrawingVisual drawingVisual = new DrawingVisual(); // Retrieve the DrawingContext in order to create new drawing content. DrawingContext drawingContext = drawingVisual.RenderOpen(); // Create a rectangle and draw it in the DrawingContext. Rect rect = new Rect(new System.Windows.Point(160, 100), new System.Windows.Size(320, 80)); drawingContext.DrawRectangle(System.Windows.Media.Brushes.LightBlue, (System.Windows.Media.Pen)null, rect); // Persist the drawing content. drawingContext.Close(); return drawingVisual; }
The next example demonstrates the PushOpacity, PushEffect, and Pop commands. The DrawingContext is obtained from a DrawingGroup and displayed using an Image control.
using System; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Navigation; using System.Windows.Media.Effects; namespace SDKSample { public class PushEffectExample : Page { public PushEffectExample() { Pen shapeOutlinePen = new Pen(Brushes.Black, 2); shapeOutlinePen.Freeze(); // Create a DrawingGroup DrawingGroup dGroup = new DrawingGroup(); // Obtain a DrawingContext from // the DrawingGroup. using (DrawingContext dc = dGroup.Open()) { // Draw a rectangle at full opacity. dc.DrawRectangle(Brushes.Blue, shapeOutlinePen, new Rect(0, 0, 25, 25)); // Push an opacity change of 0.5. // The opacity of each subsequent drawing will // will be multiplied by 0.5. dc.PushOpacity(0.5); // This rectangle is drawn at 50% opacity. dc.DrawRectangle(Brushes.Blue, shapeOutlinePen, new Rect(25, 25, 25, 25)); // Blurs subsquent drawings. dc.PushEffect(new BlurBitmapEffect(), null); // This rectangle is blurred and drawn at 50% opacity (0.5 x 0.5). dc.DrawRectangle(Brushes.Blue, shapeOutlinePen, new Rect(50, 50, 25, 25)); // This rectangle is also blurred and drawn at 50% opacity. dc.DrawRectangle(Brushes.Blue, shapeOutlinePen, new Rect(75, 75, 25, 25)); // Stop applying the blur to subsquent drawings. dc.Pop(); // This rectangle is drawn at 50% opacity with no blur effect. dc.DrawRectangle(Brushes.Blue, shapeOutlinePen, new Rect(100, 100, 25, 25)); } // Display the drawing using an image control. Image theImage = new Image(); DrawingImage dImageSource = new DrawingImage(dGroup); theImage.Source = dImageSource; this.Content = theImage; } } }
More Code
| How to: Draw Text to a Visual | The following example shows how to draw text to a DrawingVisual using a DrawingContext object. A drawing context is returned by calling the RenderOpen method of a DrawingVisual object. You can draw graphics and text into a drawing context. |
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.




