DrawingContext Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Descreve o conteúdo visual usando os comandos draw, push e pop.
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
- Implementações
Exemplos
O exemplo a seguir recupera um DrawingContext de um 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 a seguir demonstra os PushOpacitycomandos , PushEffecte Pop . O DrawingContext é obtido de um DrawingGroup e exibido usando um Image controle .
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
Comentários
Use um DrawingContext para preencher um Visual ou um Drawing com conteúdo visual.
Embora os DrawingContext métodos de desenho pareçam semelhantes aos métodos de desenho do System.Drawing.Graphics tipo, eles funcionam de forma muito diferente: DrawingContext é usado com um sistema gráfico de modo retido, enquanto o System.Drawing.Graphics tipo é usado com um sistema gráfico de modo imediato. Ao usar os comandos de desenho de um DrawingContext objeto, na verdade, você está armazenando um conjunto de instruções de renderização (embora o mecanismo de armazenamento exato dependa do tipo de objeto que fornece o DrawingContext) que posteriormente será usado pelo sistema gráfico; você não está desenhando na tela em tempo real. Para obter mais informações sobre como funciona o sistema de gráficos do WPF (Windows Presentation Foundation), confira Visão geral da renderização de elementos gráficos do WPF.
Você nunca cria uma instância direta de um DrawingContext; você pode, no entanto, adquirir um contexto de desenho de determinados métodos, como DrawingGroup.Open e DrawingVisual.RenderOpen.
Propriedades
Dispatcher |
Obtém o Dispatcher ao qual este DispatcherObject está associado. (Herdado de DispatcherObject) |
Métodos
CheckAccess() |
Determina se o thread de chamada tem acesso a este DispatcherObject. (Herdado de DispatcherObject) |
Close() |
Fecha o DrawingContext e libera o conteúdo. Depois disso, o DrawingContext não pode ser modificado. |
DisposeCore() |
Libera todos os recursos usados pelo DrawingContext. |
DrawDrawing(Drawing) |
Desenha o objeto Drawing especificado. |
DrawEllipse(Brush, Pen, Point, AnimationClock, Double, AnimationClock, Double, AnimationClock) |
Desenha uma elipse com o Brush e Pen especificado e aplica os relógios de animação especificados. |
DrawEllipse(Brush, Pen, Point, Double, Double) | |
DrawGeometry(Brush, Pen, Geometry) |
Desenha a Geometry especificada usando o Brush e Pen especificados. |
DrawGlyphRun(Brush, GlyphRun) |
Desenha o texto especificado. |
DrawImage(ImageSource, Rect) |
Desenha uma imagem na região definida pelo Rect especificado. |
DrawImage(ImageSource, Rect, AnimationClock) |
Desenha uma imagem na região definida pelo Rect especificado e aplica o relógio de animação especificado. |
DrawLine(Pen, Point, AnimationClock, Point, AnimationClock) |
Desenha uma linha entre os pontos especificados usando o Pen especificado e aplica os relógios de animação especificados. |
DrawLine(Pen, Point, Point) |
Desenha uma linha entre os pontos especificados usando o Pen especificado. |
DrawRectangle(Brush, Pen, Rect) |
Desenha um retângulo com o Brush e Pen especificados. A caneta e o pincel podem ser |
DrawRectangle(Brush, Pen, Rect, AnimationClock) |
Desenha um retângulo com o Brush e Pen especificado e aplica os relógios de animação especificados. |
DrawRoundedRectangle(Brush, Pen, Rect, AnimationClock, Double, AnimationClock, Double, AnimationClock) |
Desenha um retângulo arredondado com o Brush e Pen especificado e aplica os relógios de animação especificados. |
DrawRoundedRectangle(Brush, Pen, Rect, Double, Double) |
Desenha um retângulo arredondado com o Brush e Pen especificados. |
DrawText(FormattedText, Point) |
Desenha texto formatado no local especificado. |
DrawVideo(MediaPlayer, Rect) |
Desenha um vídeo na região especificada. |
DrawVideo(MediaPlayer, Rect, AnimationClock) |
Desenha um vídeo na região especificada e aplica o relógio de animação especificado. |
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
Pop() |
Exibe a última operação de máscara de opacidade, opacidade, recortar, efeito ou transformação que foi enviada por push no contexto de desenho. |
PushClip(Geometry) |
Envia a região de corte especificada no contexto do desenho. |
PushEffect(BitmapEffect, BitmapEffectInput) |
Obsoleto.
Envia o BitmapEffect especificado no contexto do desenho. |
PushGuidelineSet(GuidelineSet) |
Envia o GuidelineSet especificado no contexto do desenho. |
PushOpacity(Double) |
Envia por push a configuração de opacidade especificada no contexto de desenho. |
PushOpacity(Double, AnimationClock) |
Envia por push a configuração de opacidade especificada no contexto do desenho e aplica o relógio de animação especificado. |
PushOpacityMask(Brush) |
Envia por push a máscara de opacidade especificada no contexto de desenho. |
PushTransform(Transform) |
Envia o Transform especificado no contexto do desenho. |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
VerifyAccess() |
Impõe que o thread de chamada tenha acesso a este DispatcherObject. (Herdado de DispatcherObject) |
VerifyApiNonstructuralChange() |
Esse membro dá suporte à infraestrutura do WPF e não se destina a ser usado diretamente do seu código. |
Implantações explícitas de interface
IDisposable.Dispose() |
Esse membro dá suporte à infraestrutura de Windows Presentation Foundation (WPF) e não se destina a ser usado diretamente do seu código. |