Condividi tramite


DrawingContext Classe

Definizione

Descrive il contenuto visivo usando i comandi 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
Ereditarietà
DrawingContext
Implementazioni

Esempio

Nell'esempio seguente viene recuperato un DrawingContext oggetto da un DrawingVisual oggetto e viene utilizzato per disegnare un rettangolo.

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

Nell'esempio seguente vengono illustrati i PushOpacitycomandi , PushEffecte Pop . L'oggetto DrawingContext viene ottenuto da un DrawingGroup oggetto e visualizzato utilizzando un Image controllo .

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

Commenti

Usare un DrawingContext oggetto per popolare un Visual oggetto o con Drawing contenuto visivo.

Anche se i DrawingContext metodi di disegno appaiono simili ai metodi di disegno del System.Drawing.Graphics tipo, funzionano in modo molto diverso: DrawingContext viene usato con un sistema grafico in modalità mantenuta, mentre il System.Drawing.Graphics tipo viene usato con un sistema grafico in modalità immediata. Quando si usano i comandi di disegno di un DrawingContext oggetto, si archivia effettivamente un set di istruzioni di rendering (anche se il meccanismo di archiviazione esatto dipende dal tipo di oggetto che fornisce ) DrawingContextche verrà usato successivamente dal sistema grafico; non si sta disegnando sullo schermo in tempo reale. Per altre informazioni sul funzionamento del sistema grafico Windows Presentation Foundation (WPF), vedere Cenni preliminari sul rendering della grafica WPF.

Non è mai possibile creare direttamente un'istanza di . DrawingContextÈ tuttavia possibile acquisire un contesto di disegno da determinati metodi, ad esempio DrawingGroup.Open e DrawingVisual.RenderOpen.

Proprietà

Dispatcher

Ottiene l'oggetto Dispatcher associato a DispatcherObject.

(Ereditato da DispatcherObject)

Metodi

CheckAccess()

Determina se il thread chiamante ha accesso a DispatcherObject.

(Ereditato da DispatcherObject)
Close()

Chiude l'oggetto DrawingContext e scarica il contenuto. In seguito non sarà possibile modificare l'oggetto DrawingContext.

DisposeCore()

Rilascia tutte le risorse usate da DrawingContext.

DrawDrawing(Drawing)

Disegna l'oggetto Drawing specificato.

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

Disegna un'ellisse con gli oggetti Brush e Pen specificati e applica i clock di animazione definiti.

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

Disegna un'ellisse con gli oggetti Brush e Pen specificati.

DrawGeometry(Brush, Pen, Geometry)

Disegna l'oggetto Geometry usando gli oggetti Brush e Pen specificati.

DrawGlyphRun(Brush, GlyphRun)

Disegna il testo specificato.

DrawImage(ImageSource, Rect)

Disegna un'immagine nell'area definita dall'oggetto Rect specificato.

DrawImage(ImageSource, Rect, AnimationClock)

Disegna un'immagine nell'area definita dall'oggetto Rect specificato e applica il clock di animazione specificato.

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

Disegna una linea tra i punti specificati utilizzando l'oggetto Pen definito e applica i clock di animazione specificati.

DrawLine(Pen, Point, Point)

Disegna una linea tra i punti specificati utilizzando l'oggetto Pen specificato.

DrawRectangle(Brush, Pen, Rect)

Disegna un rettangolo con gli oggetti Brush e Pen specificati. La penna e il pennello possono essere entrambi impostati su null.

DrawRectangle(Brush, Pen, Rect, AnimationClock)

Disegna un rettangolo con gli oggetti Brush e Pen specificati e applica i clock di animazione definiti.

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

Disegna un rettangolo arrotondato con gli oggetti Brush e Pen specificati e applica i clock di animazione definiti.

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

Disegna un rettangolo arrotondato con gli oggetti Brush e Pen specificati.

DrawText(FormattedText, Point)

Disegna il testo formattato nella posizione specificata.

DrawVideo(MediaPlayer, Rect)

Crea un video nell'area specificata.

DrawVideo(MediaPlayer, Rect, AnimationClock)

Crea un video nell'area specificata e applica il clock di animazione definito.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
Pop()

Estrae l'ultima operazione relativa a una maschera di opacità, all'opacità, al ridimensionamento, a un effetto o una trasformazione inserita nel contesto del disegno.

PushClip(Geometry)

Inserisce l'area di ridimensionamento specificata nel contesto del disegno.

PushEffect(BitmapEffect, BitmapEffectInput)
Obsoleta.

Inserisce l'oggetto BitmapEffect specificato nel contesto del disegno.

PushGuidelineSet(GuidelineSet)

Inserisce l'oggetto GuidelineSet specificato nel contesto del disegno.

PushOpacity(Double)

Inserisce l'impostazione di opacità specificata nel contesto del disegno.

PushOpacity(Double, AnimationClock)

Inserisce l'impostazione di opacità specificata nel contesto del disegno e applica il clock di animazione definito.

PushOpacityMask(Brush)

Inserisce la maschera di opacità specificata nel contesto del disegno.

PushTransform(Transform)

Inserisce l'oggetto Transform specificato nel contesto del disegno.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
VerifyAccess()

Impone che il thread chiamante abbia accesso a DispatcherObject.

(Ereditato da DispatcherObject)
VerifyApiNonstructuralChange()

Questo membro supporta l'infrastruttura WPF e non deve essere usato direttamente dal codice.

Implementazioni dell'interfaccia esplicita

IDisposable.Dispose()

Questo membro supporta l'infrastruttura Windows Presentation Foundation (WPF) e non deve essere usato direttamente dal codice.

Si applica a

Vedi anche