DrawingContext Class

 

Describes visual content using draw, push, and pop commands.

Namespace:   System.Windows.Media
Assembly:  PresentationCore (in PresentationCore.dll)

System.Object
  System.Windows.Threading.DispatcherObject
    System.Windows.Media.DrawingContext

public abstract class DrawingContext : DispatcherObject, IDisposable

NameDescription
System_CAPS_pubpropertyDispatcher

Gets the Dispatcher this DispatcherObject is associated with. (Inherited from DispatcherObject.)

NameDescription
System_CAPS_pubmethodCheckAccess()

Determines whether the calling thread has access to this DispatcherObject.(Inherited from DispatcherObject.)

System_CAPS_pubmethodClose()

Closes the DrawingContext and flushes the content. Afterward, the DrawingContext cannot be modified.

System_CAPS_protmethodDisposeCore()

Releases all resources used by the DrawingContext.

System_CAPS_pubmethodDrawDrawing(Drawing)

Draws the specified Drawing object.

System_CAPS_pubmethodDrawEllipse(Brush, Pen, Point, AnimationClock, Double, AnimationClock, Double, AnimationClock)

Draws an ellipse with the specified Brush and Pen and applies the specified animation clocks.

System_CAPS_pubmethodDrawEllipse(Brush, Pen, Point, Double, Double)

Draws an ellipse with the specified Brush and Pen.

System_CAPS_pubmethodDrawGeometry(Brush, Pen, Geometry)

Draws the specified Geometry using the specified Brush and Pen.

System_CAPS_pubmethodDrawGlyphRun(Brush, GlyphRun)

Draws the specified text.

System_CAPS_pubmethodDrawImage(ImageSource, Rect)

Draws an image into the region defined by the specified Rect.

System_CAPS_pubmethodDrawImage(ImageSource, Rect, AnimationClock)

Draws an image into the region defined by the specified Rect and applies the specified animation clock.

System_CAPS_pubmethodDrawLine(Pen, Point, AnimationClock, Point, AnimationClock)

Draws a line between the specified points using the specified Pen and applies the specified animation clocks.

System_CAPS_pubmethodDrawLine(Pen, Point, Point)

Draws a line between the specified points using the specified Pen.

System_CAPS_pubmethodDrawRectangle(Brush, Pen, Rect)

Draws a rectangle with the specified Brush and Pen. The pen and the brush can be null.

System_CAPS_pubmethodDrawRectangle(Brush, Pen, Rect, AnimationClock)

Draws a rectangle with the specified Brush and Pen and applies the specified animation clocks.

System_CAPS_pubmethodDrawRoundedRectangle(Brush, Pen, Rect, AnimationClock, Double, AnimationClock, Double, AnimationClock)

Draws a rounded rectangle with the specified Brush and Pen and applies the specified animation clocks.

System_CAPS_pubmethodDrawRoundedRectangle(Brush, Pen, Rect, Double, Double)

Draws a rounded rectangle with the specified Brush and Pen.

System_CAPS_pubmethodDrawText(FormattedText, Point)

Draws formatted text at the specified location.

System_CAPS_pubmethodDrawVideo(MediaPlayer, Rect)

Draws a video into the specified region.

System_CAPS_pubmethodDrawVideo(MediaPlayer, Rect, AnimationClock)

Draws a video into the specified region and applies the specified animation clock.

System_CAPS_pubmethodEquals(Object)

Determines whether the specified object is equal to the current object.(Inherited from Object.)

System_CAPS_protmethodFinalize()

Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.)

System_CAPS_pubmethodGetHashCode()

Serves as the default hash function. (Inherited from Object.)

System_CAPS_pubmethodGetType()

Gets the Type of the current instance.(Inherited from Object.)

System_CAPS_protmethodMemberwiseClone()

Creates a shallow copy of the current Object.(Inherited from Object.)

System_CAPS_pubmethodPop()

Pops the last opacity mask, opacity, clip, effect, or transform operation that was pushed onto the drawing context.

System_CAPS_pubmethodPushClip(Geometry)

Pushes the specified clip region onto the drawing context.

System_CAPS_pubmethodPushEffect(BitmapEffect, BitmapEffectInput)

Obsolete. Pushes the specified BitmapEffect onto the drawing context.

System_CAPS_pubmethodPushGuidelineSet(GuidelineSet)

Pushes the specified GuidelineSet onto the drawing context.

System_CAPS_pubmethodPushOpacity(Double)

Pushes the specified opacity setting onto the drawing context.

System_CAPS_pubmethodPushOpacity(Double, AnimationClock)

Pushes the specified opacity setting onto the drawing context and applies the specified animation clock.

System_CAPS_pubmethodPushOpacityMask(Brush)

Pushes the specified opacity mask onto the drawing context.

System_CAPS_pubmethodPushTransform(Transform)

Pushes the specified Transform onto the drawing context.

System_CAPS_pubmethodToString()

Returns a string that represents the current object.(Inherited from Object.)

System_CAPS_pubmethodVerifyAccess()

Enforces that the calling thread has access to this DispatcherObject.(Inherited from DispatcherObject.)

System_CAPS_protmethodVerifyApiNonstructuralChange()

This member supports the WPF infrastructure and is not intended to be used directly from your code. 

NameDescription
System_CAPS_pubinterfaceSystem_CAPS_privmethodIDisposable.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;

        }




    }

}

.NET Framework
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.

Return to top
Show: