Compartir vía


DrawingContext Clase

Definición

Describe el contenido visual mediante comandos de dibujo, inserción y extracción.

public ref class DrawingContext abstract : System::Windows::Threading::DispatcherObject, IDisposable
public abstract class DrawingContext : System.Windows.Threading.DispatcherObject, IDisposable
type DrawingContext = class
    inherit DispatcherObject
    interface IDisposable
Public MustInherit Class DrawingContext
Inherits DispatcherObject
Implements IDisposable
Herencia
DrawingContext
Implementaciones

Ejemplos

En el ejemplo siguiente se recupera un DrawingContext de un DrawingVisual y se usa para dibujar un rectángulo.

// 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;
}
' 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

En el ejemplo siguiente se muestran los PushOpacitycomandos , PushEffecty Pop . DrawingContext el objeto se obtiene de y DrawingGroup se muestra mediante un 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;
        }
    }
}
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

Comentarios

Use para DrawingContext rellenar un Visual objeto o con Drawing contenido visual.

Aunque los DrawingContext métodos de dibujo aparecen similares a los métodos de dibujo del System.Drawing.Graphics tipo, funcionan de forma muy diferente: DrawingContext se usa con un sistema de gráficos en modo retenido, mientras que el System.Drawing.Graphics tipo se usa con un sistema de gráficos en modo inmediato. Cuando se usan comandos de dibujo de un objeto DrawingContext, en realidad se almacena un conjunto de instrucciones de representación (aunque el mecanismo exacto de almacenamiento depende del tipo de objeto que proporciona el DrawingContext) que el sistema de gráficos usará más adelante; no se dibuja en la pantalla en tiempo real. Para obtener más información sobre cómo funciona el sistema gráfico de Windows Presentation Foundation (WPF), vea Información general sobre la representación de gráficos de WPF.

Nunca se crea una instancia de DrawingContext directamente; sin embargo, puede adquirir un contexto de dibujo de determinados métodos, como DrawingGroup.Open y DrawingVisual.RenderOpen.

Propiedades

Dispatcher

Obtiene el objeto Dispatcher al que está asociado DispatcherObject.

(Heredado de DispatcherObject)

Métodos

CheckAccess()

Determina si el subproceso de la llamada tiene acceso a DispatcherObject.

(Heredado de DispatcherObject)
Close()

Cierra el objeto DrawingContext y vacía el contenido. Después, no se puede modificar DrawingContext.

DisposeCore()

Libera todos los recursos que usa DrawingContext.

DrawDrawing(Drawing)

Dibuja el objeto Drawing especificado.

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

Dibuja una elipse con los objetos Brush y Pen especificados y aplica los relojes de animación especificados.

DrawEllipse(Brush, Pen, Point, Double, Double)

Dibuja una elipse con los objetos Brush y Pen especificados.

DrawGeometry(Brush, Pen, Geometry)

Dibuja el elemento Geometry especificado mediante los elementos especificados Brush y Pen.

DrawGlyphRun(Brush, GlyphRun)

Dibuja el texto especificado.

DrawImage(ImageSource, Rect)

Dibuja una imagen en la región definida por la estructura Rect especificada.

DrawImage(ImageSource, Rect, AnimationClock)

Dibuja una imagen en la región definida por la estructura Rect especificada y aplica el reloj de animación especificado.

DrawLine(Pen, Point, AnimationClock, Point, AnimationClock)

Dibuja una línea entre los puntos especificados utilizando el objeto Pen especificado y aplica los relojes de animación especificados.

DrawLine(Pen, Point, Point)

Dibuja una línea entre los puntos especificados utilizando el objeto Pen especificado.

DrawRectangle(Brush, Pen, Rect)

Dibuja un rectángulo con los objetos Brush y Pen especificados. El lápiz y el pincel pueden ser null.

DrawRectangle(Brush, Pen, Rect, AnimationClock)

Dibuja un rectángulo con los objetos Brush y Pen especificados y aplica los relojes de animación especificados.

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

Dibuja un rectángulo redondeado con los objetos Brush y Pen especificados y aplica los relojes de animación especificados.

DrawRoundedRectangle(Brush, Pen, Rect, Double, Double)

Dibuja un rectángulo redondeado con los objetos Brush y Pen especificados.

DrawText(FormattedText, Point)

Dibuja texto con formato en la ubicación especificada.

DrawVideo(MediaPlayer, Rect)

Dibuja un vídeo en la región especificada.

DrawVideo(MediaPlayer, Rect, AnimationClock)

Dibuja un vídeo en la región especificada y aplica el reloj de animación especificado.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
Pop()

Extrae la última máscara de opacidad, opacidad, recorte, efecto u operación de transformación que se insertó en el contexto de dibujo.

PushClip(Geometry)

Inserta la región de recorte especificada en el contexto de dibujo.

PushEffect(BitmapEffect, BitmapEffectInput)
Obsoletos.

Inserta el objeto BitmapEffect especificado en el contexto de dibujo.

PushGuidelineSet(GuidelineSet)

Inserta el objeto GuidelineSet especificado en el contexto de dibujo.

PushOpacity(Double)

Inserta el valor de opacidad especificado en el contexto de dibujo.

PushOpacity(Double, AnimationClock)

Inserta el valor de opacidad especificado en el contexto de dibujo y aplica el reloj de animación especificado.

PushOpacityMask(Brush)

Inserta la máscara de opacidad especificada en el contexto de dibujo.

PushTransform(Transform)

Inserta el objeto Transform especificado en el contexto de dibujo.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
VerifyAccess()

Exige que el subproceso de la llamada tenga acceso a DispatcherObject.

(Heredado de DispatcherObject)
VerifyApiNonstructuralChange()

Este miembro admite la infraestructura de WPF y no está pensado para usarse directamente desde el código.

Implementaciones de interfaz explícitas

IDisposable.Dispose()

Este miembro admite la infraestructura de Windows Presentation Foundation (WPF) y no está pensada para usarse directamente desde el código.

Se aplica a

Consulte también