DrawingContext DrawingContext DrawingContext DrawingContext Class

Определение

Описывает визуальное содержимое с использованием команд рисования, проталкивания и выталкивания.Describes visual content using draw, push, and pop commands.

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
Наследование
Реализации

Примеры

В следующем примере DrawingContext извлекается из DrawingVisual и используется для рисования прямоугольника.The following example retrieves a DrawingContext from a DrawingVisual and uses it to draw a rectangle.

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

В следующем примере демонстрируются PushOpacityкоманды PushEffect, и Pop .The next example demonstrates the PushOpacity, PushEffect, and Pop commands. Объект DrawingContext извлекается DrawingGroup из и отображается с помощью Image элемента управления.The DrawingContext is obtained from a DrawingGroup and displayed using an 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

Комментарии

Используйте для заполнения Visual илиDrawing с визуальным содержимым. DrawingContextUse a DrawingContext to populate a Visual or a Drawing with visual content.

Несмотря на DrawingContext то, что методы рисования похожи на методы System.Drawing.Graphics рисования типа, они работают очень по-разному: DrawingContext используется с графической системой с System.Drawing.Graphics сохранением режима, а тип используется в режиме интерпретации. Графическая система.Although the DrawingContext draw methods appear similar to the draw methods of the System.Drawing.Graphics type, they function very differently: DrawingContext is used with a retained mode graphics system, while the System.Drawing.Graphics type is used with an immediate mode graphics system. При использовании DrawingContext команд рисования объекта вы фактически сохраняете набор инструкций по отрисовке (хотя точный механизм хранения зависит от типа объекта, который DrawingContextпредоставляет), который впоследствии будет использоваться графической системой; не рисуются на экране в режиме реального времени.When you use a DrawingContext object's draw commands, you are actually storing a set of rendering instructions (although the exact storage mechanism depends on the type of object that supplies the DrawingContext) that will later be used by the graphics system; you are not drawing to the screen in real-time. Дополнительные сведения о работе графической системы Windows Presentation Foundation (WPF) см. в разделе Общие сведения о отрисовке графики в WPF.For more information about how the Windows Presentation Foundation (WPF) graphics system works, see WPF Graphics Rendering Overview.

Вы никогда непосредственно не создаете экземпляр DrawingContext, однако можете получить контекст рисования с помощью определенных методов, например DrawingGroup.Open и DrawingVisual.RenderOpen.You never directly instantiate a DrawingContext; you can, however, acquire a drawing context from certain methods, such as DrawingGroup.Open and DrawingVisual.RenderOpen.

Методы

CheckAccess() CheckAccess() CheckAccess() CheckAccess()

Определяет, имеет ли вызывающий поток доступ к этому DispatcherObject.Determines whether the calling thread has access to this DispatcherObject.

(Inherited from DispatcherObject)
Close() Close() Close() Close()

Закрывает DrawingContext и сбрасывает содержимое.Closes the DrawingContext and flushes the content. После этого изменение DrawingContext становится невозможным.Afterward, the DrawingContext cannot be modified.

DisposeCore() DisposeCore() DisposeCore() DisposeCore()

Освобождает все ресурсы, занятые модулем DrawingContext.Releases all resources used by the DrawingContext.

DrawDrawing(Drawing) DrawDrawing(Drawing) DrawDrawing(Drawing) DrawDrawing(Drawing)

Рисует заданный объект Drawing.Draws the specified Drawing object.

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

Рисует эллипс заданными Brush и Pen и применяет заданные часы анимации.Draws an ellipse with the specified Brush and Pen and applies the specified animation clocks.

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

Рисует эллипс заданными Brush и Pen.Draws an ellipse with the specified Brush and Pen.

DrawGeometry(Brush, Pen, Geometry) DrawGeometry(Brush, Pen, Geometry) DrawGeometry(Brush, Pen, Geometry) DrawGeometry(Brush, Pen, Geometry)

Рисует заданный Geometry с использованием заданных Brush и Pen.Draws the specified Geometry using the specified Brush and Pen.

DrawGlyphRun(Brush, GlyphRun) DrawGlyphRun(Brush, GlyphRun) DrawGlyphRun(Brush, GlyphRun) DrawGlyphRun(Brush, GlyphRun)

Рисует заданный текст.Draws the specified text.

DrawImage(ImageSource, Rect) DrawImage(ImageSource, Rect) DrawImage(ImageSource, Rect) DrawImage(ImageSource, Rect)

Рисует изображения в области, определенной заданным Rect.Draws an image into the region defined by the specified Rect.

DrawImage(ImageSource, Rect, AnimationClock) DrawImage(ImageSource, Rect, AnimationClock) DrawImage(ImageSource, Rect, AnimationClock) DrawImage(ImageSource, Rect, AnimationClock)

Рисует изображение в области, определенной заданным Rect, и применяет заданные часы анимации.Draws an image into the region defined by the specified Rect and applies the specified animation clock.

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

Рисует линию между заданными точками, используя заданный Pen, и применяет заданные часы анимации.Draws a line between the specified points using the specified Pen and applies the specified animation clocks.

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

Рисует линию между заданными точками, используя заданный Pen.Draws a line between the specified points using the specified Pen.

DrawRectangle(Brush, Pen, Rect) DrawRectangle(Brush, Pen, Rect) DrawRectangle(Brush, Pen, Rect) DrawRectangle(Brush, Pen, Rect)

Рисует прямоугольник заданными Brush и Pen.Draws a rectangle with the specified Brush and Pen. И перо, и кисть могут одновременно иметь значение null.The pen and the brush can be null.

DrawRectangle(Brush, Pen, Rect, AnimationClock) DrawRectangle(Brush, Pen, Rect, AnimationClock) DrawRectangle(Brush, Pen, Rect, AnimationClock) DrawRectangle(Brush, Pen, Rect, AnimationClock)

Рисует прямоугольник заданными Brush и Pen и применяет заданные часы анимации.Draws a rectangle with the specified Brush and Pen and applies the specified animation clocks.

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

Рисует прямоугольник с закругленными углами заданными Brush и Pen и применяет заданные часы анимации.Draws a rounded rectangle with the specified Brush and Pen and applies the specified animation clocks.

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

Рисует прямоугольник с закругленными углами заданными Brush и Pen.Draws a rounded rectangle with the specified Brush and Pen.

DrawText(FormattedText, Point) DrawText(FormattedText, Point) DrawText(FormattedText, Point) DrawText(FormattedText, Point)

Рисует текст в указанной позиции.Draws formatted text at the specified location.

DrawVideo(MediaPlayer, Rect) DrawVideo(MediaPlayer, Rect) DrawVideo(MediaPlayer, Rect) DrawVideo(MediaPlayer, Rect)

Рисует видео в заданной области.Draws a video into the specified region.

DrawVideo(MediaPlayer, Rect, AnimationClock) DrawVideo(MediaPlayer, Rect, AnimationClock) DrawVideo(MediaPlayer, Rect, AnimationClock) DrawVideo(MediaPlayer, Rect, AnimationClock)

Рисует видео в заданной области и применяет заданные часы анимации.Draws a video into the specified region and applies the specified animation clock.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
Pop() Pop() Pop() Pop()

Выталкивает последнюю маску непрозрачности, непрозрачность, клип, эффект или операцию преобразования, которые были протолкнуты в контекст рисования.Pops the last opacity mask, opacity, clip, effect, or transform operation that was pushed onto the drawing context.

PushClip(Geometry) PushClip(Geometry) PushClip(Geometry) PushClip(Geometry)

Проталкивает заданную область клипа в контекст рисования.Pushes the specified clip region onto the drawing context.

PushEffect(BitmapEffect, BitmapEffectInput) PushEffect(BitmapEffect, BitmapEffectInput) PushEffect(BitmapEffect, BitmapEffectInput) PushEffect(BitmapEffect, BitmapEffectInput)

Помещает заданный объект BitmapEffect в контекст рисования.Pushes the specified BitmapEffect onto the drawing context.

PushGuidelineSet(GuidelineSet) PushGuidelineSet(GuidelineSet) PushGuidelineSet(GuidelineSet) PushGuidelineSet(GuidelineSet)

Помещает заданный объект GuidelineSet в контекст рисования.Pushes the specified GuidelineSet onto the drawing context.

PushOpacity(Double) PushOpacity(Double) PushOpacity(Double) PushOpacity(Double)

Проталкивает заданный параметр непрозрачности в контекст рисования.Pushes the specified opacity setting onto the drawing context.

PushOpacity(Double, AnimationClock) PushOpacity(Double, AnimationClock) PushOpacity(Double, AnimationClock) PushOpacity(Double, AnimationClock)

Проталкивает заданный параметр непрозрачности в контекст рисования и применяет заданные часы анимации.Pushes the specified opacity setting onto the drawing context and applies the specified animation clock.

PushOpacityMask(Brush) PushOpacityMask(Brush) PushOpacityMask(Brush) PushOpacityMask(Brush)

Проталкивает заданную маску непрозрачности в контекст рисования.Pushes the specified opacity mask onto the drawing context.

PushTransform(Transform) PushTransform(Transform) PushTransform(Transform) PushTransform(Transform)

Помещает заданный объект Transform в контекст рисования.Pushes the specified Transform onto the drawing context.

ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)
VerifyAccess() VerifyAccess() VerifyAccess() VerifyAccess()

Обеспечивает наличие у вызывающего потока доступ к этому DispatcherObject.Enforces that the calling thread has access to this DispatcherObject.

(Inherited from DispatcherObject)
VerifyApiNonstructuralChange() VerifyApiNonstructuralChange() VerifyApiNonstructuralChange() VerifyApiNonstructuralChange()

Этот член поддерживает инфраструктуру WPFWPF и не предназначен для непосредственного использования из кода.This member supports the WPFWPF infrastructure and is not intended to be used directly from your code.

Явные реализации интерфейса

IDisposable.Dispose() IDisposable.Dispose() IDisposable.Dispose() IDisposable.Dispose()

Этот член поддерживает инфраструктуру Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) и не предназначен для непосредственного использования из кода.This member supports the Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code.

Свойства

Dispatcher Dispatcher Dispatcher Dispatcher

Возвращает объект Dispatcher, с которым связан этот объект DispatcherObject.Gets the Dispatcher this DispatcherObject is associated with.

(Inherited from DispatcherObject)

Применяется к

Дополнительно