DrawingContext Class
Describes visual content using draw, push, and pop commands.
Assembly: PresentationCore (in PresentationCore.dll)
| 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(Drawing) | Draws the specified Drawing object. |
![]() | DrawEllipse(Brush, Pen, Point, AnimationClock, Double, AnimationClock, Double, AnimationClock) | |
![]() | DrawEllipse(Brush, Pen, Point, Double, Double) | |
![]() | DrawGeometry(Brush, Pen, Geometry) | |
![]() | DrawGlyphRun(Brush, GlyphRun) | 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, AnimationClock, Point, AnimationClock) | Draws a line between the specified points using the specified Pen and applies the specified animation clocks. |
![]() | DrawLine(Pen, Point, Point) | Draws a line between the specified points using the specified Pen. |
![]() | DrawRectangle(Brush, Pen, Rect) | |
![]() | DrawRectangle(Brush, Pen, Rect, AnimationClock) | |
![]() | DrawRoundedRectangle(Brush, Pen, Rect, AnimationClock, Double, AnimationClock, Double, AnimationClock) | |
![]() | DrawRoundedRectangle(Brush, Pen, Rect, Double, Double) | |
![]() | DrawText(FormattedText, Point) | 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 the default hash function. (Inherited from Object.) |
![]() | GetType() | |
![]() | MemberwiseClone() | |
![]() | Pop() | Pops the last opacity mask, opacity, clip, effect, or transform operation that was pushed onto the drawing context. |
![]() | PushClip(Geometry) | Pushes the specified clip region onto the drawing context. |
![]() | PushEffect(BitmapEffect, BitmapEffectInput) | Obsolete. Pushes the specified BitmapEffect onto the drawing context. |
![]() | PushGuidelineSet(GuidelineSet) | 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(Brush) | Pushes the specified opacity mask onto the drawing context. |
![]() | PushTransform(Transform) | 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 Function CreateDrawingVisualRectangle() As DrawingVisual Dim drawingVisual As New DrawingVisual() ' Retrieve the DrawingContext in order to create new drawing content. Dim drawingContext As DrawingContext = drawingVisual.RenderOpen() ' Create a rectangle and draw it in the DrawingContext. Dim rect As New Rect(New Point(160, 100), New Size(320, 80)) drawingContext.DrawRectangle(Brushes.LightBlue, CType(Nothing, Pen), rect) ' Persist the drawing content. drawingContext.Close() Return drawingVisual End Function
The next example demonstrates the PushOpacity, PushEffect, and Pop commands. The DrawingContext is obtained from a DrawingGroup and displayed using an Image control.
Imports System.Windows.Media.Animation Imports System.Windows.Media.Effects Namespace SDKSample Public Class PushEffectExample Inherits Page Public Sub New() Dim shapeOutlinePen As New Pen(Brushes.Black, 2) shapeOutlinePen.Freeze() ' Create a DrawingGroup Dim dGroup As New DrawingGroup() ' Obtain a DrawingContext from ' the DrawingGroup. Using dc As DrawingContext = 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(), Nothing) ' 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)) End Using ' Display the drawing using an image control. Dim theImage As New Image() Dim dImageSource As New DrawingImage(dGroup) theImage.Source = dImageSource Me.Content = theImage End Sub End Class End Namespace
Available since 3.0
Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.




