DrawingContext Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Opisuje zawartość wizualną przy użyciu poleceń rysowania, wypychania i wyskakujących okienek.
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
- Dziedziczenie
- Implementuje
Przykłady
Poniższy przykład pobiera obiekt DrawingContext z obiektu DrawingVisual i używa go do rysowania prostokąta.
// 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
W następnym przykładzie PushOpacitypokazano polecenia , PushEffecti Pop . Element DrawingContext jest uzyskiwany z obiektu DrawingGroup i wyświetlany przy użyciu kontrolki Image .
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
Uwagi
Użyj elementu , DrawingContext aby wypełnić obiekt Visual lub zawartością Drawing wizualizacji.
DrawingContext Mimo że metody rysowania są podobne do metod System.Drawing.Graphics rysowania typu, działają one zupełnie inaczej: DrawingContext jest używany z zachowanym systemem graficznym trybu, podczas gdy System.Drawing.Graphics typ jest używany z bezpośrednim systemem graficznym trybu. Gdy używasz DrawingContext poleceń rysowania obiektu, w rzeczywistości przechowujesz zestaw instrukcji renderowania (chociaż dokładny mechanizm przechowywania zależy od typu obiektu, który dostarcza DrawingContextobiekt ), który będzie później używany przez system graficzny; nie rysujesz na ekranie w czasie rzeczywistym. Aby uzyskać więcej informacji na temat sposobu działania systemu grafiki Windows Presentation Foundation (WPF), zobacz WPF Graphics Rendering Overview (Omówienie renderowania grafiki WPF).
Nigdy nie tworzy się bezpośrednio wystąpienia obiektu DrawingContext; można jednak uzyskać kontekst rysunku z niektórych metod, takich jak DrawingGroup.Open i DrawingVisual.RenderOpen.
Właściwości
Dispatcher |
Dispatcher Pobiera tę DispatcherObject wartość skojarzona z. (Odziedziczone po DispatcherObject) |
Metody
CheckAccess() |
Określa, czy wątek wywołujący ma dostęp do tego DispatcherObjectelementu . (Odziedziczone po DispatcherObject) |
Close() |
Zamyka i DrawingContext opróżnia zawartość. DrawingContext Następnie nie można go modyfikować. |
DisposeCore() |
Zwalnia wszelkie zasoby używane przez element DrawingContext. |
DrawDrawing(Drawing) |
Rysuje określony Drawing obiekt. |
DrawEllipse(Brush, Pen, Point, AnimationClock, Double, AnimationClock, Double, AnimationClock) |
Rysuje wielokropek z określonymi Brush i Pen stosuje określone zegary animacji. |
DrawEllipse(Brush, Pen, Point, Double, Double) | |
DrawGeometry(Brush, Pen, Geometry) |
Rysuje określone Geometry przy użyciu określonych Brush parametrów i Pen. |
DrawGlyphRun(Brush, GlyphRun) |
Rysuje określony tekst. |
DrawImage(ImageSource, Rect) |
Rysuje obraz do regionu zdefiniowanego przez określony Rectelement . |
DrawImage(ImageSource, Rect, AnimationClock) |
Rysuje obraz do regionu zdefiniowanego przez określony Rect i stosuje określony zegar animacji. |
DrawLine(Pen, Point, AnimationClock, Point, AnimationClock) |
Rysuje linię między określonymi punktami przy użyciu określonego Pen i stosuje określone zegary animacji. |
DrawLine(Pen, Point, Point) |
Rysuje linię między określonymi punktami przy użyciu określonego Penelementu . |
DrawRectangle(Brush, Pen, Rect) |
Rysuje prostokąt z określonymi Brush wartościami i Pen. Pióro i szczotka mogą mieć wartość |
DrawRectangle(Brush, Pen, Rect, AnimationClock) |
Rysuje prostokąt z określonym Brush Pen i stosuje określone zegary animacji. |
DrawRoundedRectangle(Brush, Pen, Rect, AnimationClock, Double, AnimationClock, Double, AnimationClock) |
Rysuje zaokrąglony prostokąt z określonym Brush Pen i stosuje określone zegary animacji. |
DrawRoundedRectangle(Brush, Pen, Rect, Double, Double) | |
DrawText(FormattedText, Point) |
Rysuje sformatowany tekst w określonej lokalizacji. |
DrawVideo(MediaPlayer, Rect) |
Rysuje wideo do określonego regionu. |
DrawVideo(MediaPlayer, Rect, AnimationClock) |
Rysuje wideo do określonego regionu i stosuje określony zegar animacji. |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
Pop() |
Wyskakuje ostatnią maskę nieprzezroczystości, nieprzezroczystość, klip, efekt lub operację przekształcania, która została wypchnięta do kontekstu rysunku. |
PushClip(Geometry) |
Wypycha określony region klipu do kontekstu rysunku. |
PushEffect(BitmapEffect, BitmapEffectInput) |
Nieaktualne.
Wypycha określony BitmapEffect kontekst rysunku. |
PushGuidelineSet(GuidelineSet) |
Wypycha określony GuidelineSet kontekst rysunku. |
PushOpacity(Double) |
Wypycha określone ustawienie nieprzezroczystości do kontekstu rysunku. |
PushOpacity(Double, AnimationClock) |
Wypycha określone ustawienie nieprzezroczystości do kontekstu rysunku i stosuje określony zegar animacji. |
PushOpacityMask(Brush) |
Wypycha określoną maskę nieprzezroczystości do kontekstu rysunku. |
PushTransform(Transform) |
Wypycha określony Transform kontekst rysunku. |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
VerifyAccess() |
Wymusza, że wątek wywołujący ma dostęp do tego DispatcherObjectelementu . (Odziedziczone po DispatcherObject) |
VerifyApiNonstructuralChange() |
Ten element członkowski obsługuje infrastrukturę WPF i nie jest przeznaczony do użycia bezpośrednio z kodu. |
Jawne implementacje interfejsu
IDisposable.Dispose() |
Ten element członkowski obsługuje infrastrukturę Windows Presentation Foundation (WPF) i nie jest przeznaczony do użycia bezpośrednio z kodu. |