DrawingContext Classe

Definição

Descreve conteúdo visual usando comandos de puxar, empurrar e estourar.

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
Herança
DrawingContext
Implementações

Exemplos

O exemplo a seguir recupera a DrawingContext de a DrawingVisual e o usa para desenhar um retâ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

O exemplo seguinte demonstra o PushOpacity comando. O DrawingContext é obtido a partir de um DrawingGroup e apresentado usando um Image controlo.

using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
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));
            }

            // 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))
            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

Observações

Use a DrawingContext para preencher a Visual ou a Drawing com conteúdo visual.

Embora os DrawingContext métodos de desenho sejam semelhantes aos métodos de desenho do System.Drawing.Graphics tipo, funcionam de forma muito diferente: DrawingContext é usado com um sistema gráfico em modo retido, enquanto o System.Drawing.Graphics tipo é usado com um sistema gráfico em modo imediato. Quando usas os comandos de desenho de um DrawingContext objeto, estás na verdade a guardar um conjunto de instruções de renderização (embora o mecanismo exato de armazenamento dependa do tipo de objeto que fornece o DrawingContext) que serão posteriormente usadas pelo sistema gráfico; não estás a desenhar no ecrã em tempo real. Para mais informações sobre como funciona o sistema gráfico Windows Presentation Foundation (WPF), consulte WPF Graphics Rendering Overview.

Você nunca instancia diretamente um DrawingContext; no entanto, pode adquirir um contexto de desenho a partir de certos métodos, como DrawingGroup.Open e DrawingVisual.RenderOpen.

Propriedades

Name Description
Dispatcher

Percebe o Dispatcher que isto DispatcherObject está associado.

(Herdado de DispatcherObject)

Métodos

Name Description
CheckAccess()

Determina se o thread que chama tem acesso a este DispatcherObject.

(Herdado de DispatcherObject)
Close()

Fecha o DrawingContext e despeja o conteúdo. Depois, não DrawingContext podem ser modificados.

DisposeCore()

Liberta todos os recursos utilizados pelo DrawingContext.

DrawDrawing(Drawing)

Desenha o objeto especificado Drawing .

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

Desenha uma elipse com os relógios de animação especificados Brush e Pen aplica.

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

Desenha uma elipse com os especificados Brush e Pen.

DrawGeometry(Brush, Pen, Geometry)

Desenha o especificado Geometry usando o especificado Brush e Pen.

DrawGlyphRun(Brush, GlyphRun)

Desenha o texto especificado.

DrawImage(ImageSource, Rect, AnimationClock)

Desenha uma imagem para a região definida pelo especificado Rect e aplica o relógio de animação especificado.

DrawImage(ImageSource, Rect)

Desenha uma imagem na região definida pelo especificado Rect.

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

Traça uma linha entre os pontos especificados usando os relógios de animação especificados Pen e aplica os relógios de animação especificados.

DrawLine(Pen, Point, Point)

Traça uma linha entre os pontos especificados usando o .Pen

DrawRectangle(Brush, Pen, Rect, AnimationClock)

Desenha um retângulo com os relógios de animação especificados Brush e Pen aplica.

DrawRectangle(Brush, Pen, Rect)

Desenha um retângulo com os especificados Brush e Pen. A caneta e o pincel podem ser null.

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

Desenha um retângulo arredondado com os relógios de animação especificados Brush e Pen aplica.

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

Desenha um retângulo arredondado com o especificado Brush e Pen.

DrawText(FormattedText, Point)

Desenha texto formatado na localização especificada.

DrawVideo(MediaPlayer, Rect, AnimationClock)

Desenha um vídeo para a região especificada e aplica o relógio de animação especificado.

DrawVideo(MediaPlayer, Rect)

Desenha um vídeo para a região especificada.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
Pop()

Aparece a última máscara de opacidade, opacidade, clip, efeito ou operação de transformação que foi empurrada para o contexto de desenho.

PushClip(Geometry)

Empurra a região do clip especificada para o contexto de desenho.

PushEffect(BitmapEffect, BitmapEffectInput)
Obsoleto.

Empurra o especificado BitmapEffect para o contexto de desenho.

PushGuidelineSet(GuidelineSet)

Empurra o especificado GuidelineSet para o contexto de desenho.

PushOpacity(Double, AnimationClock)

Empurra a definição de opacidade especificada para o contexto de desenho e aplica o relógio de animação especificado.

PushOpacity(Double)

Empurra a definição de opacidade especificada para o contexto de desenho.

PushOpacityMask(Brush)

Empurra a máscara de opacidade especificada para o contexto de desenho.

PushTransform(Transform)

Empurra o especificado Transform para o contexto de desenho.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)
VerifyAccess()

Faz cumprir que o thread que chama tem acesso a este DispatcherObject.

(Herdado de DispatcherObject)
VerifyApiNonstructuralChange()

Este membro suporta a infraestrutura WPF e não se destina a ser usado diretamente a partir do seu código.

Implementações de Interface Explícita

Name Description
IDisposable.Dispose()

Este membro suporta a infraestrutura Windows Presentation Foundation (WPF) e não foi concebido para ser usado diretamente a partir do seu código.

Aplica-se a

Ver também