DrawingContext 类

定义

使用绘图、推送和弹出命令描述可视内容。

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
实现

示例

下面的示例从 a 检索一个DrawingContextDrawingVisual并使用它绘制一个矩形。

// 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了命令 PushEffectPop 命令。 从 DrawingContext 控件 DrawingGroup 获取并使用控件显示 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

注解

使用 a DrawingContext 来填充 VisualDrawing 填充视觉内容。

DrawingContext虽然绘图方法看起来与类型的绘图方法System.Drawing.Graphics类似,但它们的工作方式非常不同:DrawingContext与保留模式图形系统一起使用,而该System.Drawing.Graphics类型与即时模式图形系统一起使用。 使用 DrawingContext 对象的绘图命令时,实际上会存储一组呈现指令 (,尽管确切的存储机制取决于提供图形系统稍后将使用的) 的对象 DrawingContext 类型;你不会实时绘制到屏幕。 有关 WPF) 图形系统Windows Presentation Foundation (工作原理的详细信息,请参阅 WPF 图形呈现概述

你永远不会直接实例化 ;DrawingContext但是,你可以从某些方法(如和DrawingVisual.RenderOpenDrawingGroup.Open获取绘图上下文。

属性

Dispatcher

获取与此 Dispatcher 关联的 DispatcherObject

(继承自 DispatcherObject)

方法

CheckAccess()

确定调用线程是否可以访问此 DispatcherObject

(继承自 DispatcherObject)
Close()

关闭 DrawingContext 并刷新内容。 此后,将不能修改 DrawingContext

DisposeCore()

释放由 DrawingContext 使用的所有资源。

DrawDrawing(Drawing)

绘制指定的 Drawing 对象。

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

使用指定的 BrushPen 绘制一个椭圆并应用指定的动画时钟。

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

使用指定的 BrushPen 绘制一个椭圆。

DrawGeometry(Brush, Pen, Geometry)

使用指定的 BrushPen 绘制指定的 Geometry

DrawGlyphRun(Brush, GlyphRun)

绘制指定的文本。

DrawImage(ImageSource, Rect)

将图像绘制到由指定的 Rect 定义的区域中。

DrawImage(ImageSource, Rect, AnimationClock)

将图像绘制到由指定的 Rect 定义的区域中并应用指定的动画时钟。

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

使用指定的 Pen 在两个指定点之间绘制一条线,并应用指定的动画时钟。

DrawLine(Pen, Point, Point)

使用指定的 Pen 在两个指定的点之间绘制一条线。

DrawRectangle(Brush, Pen, Rect)

使用指定的 BrushPen 绘制一个矩形。 pen 和 brush 都可以为 null

DrawRectangle(Brush, Pen, Rect, AnimationClock)

使用指定的 BrushPen 绘制一个矩形并应用指定的动画时钟。

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

使用指定的 BrushPen 绘制一个圆角矩形并应用指定的动画时钟。

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

使用指定的 BrushPen 绘制一个圆角矩形。

DrawText(FormattedText, Point)

在指定的位置绘制带格式文本。

DrawVideo(MediaPlayer, Rect)

将视频绘制到指定区域内。

DrawVideo(MediaPlayer, Rect, AnimationClock)

将视频绘制到指定区域内,并应用指定的动画时钟。

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
Pop()

弹出推送到绘制上下文上的最后一个不透明蒙板、不透明度、剪辑、效果或转换操作。

PushClip(Geometry)

将指定的剪辑区域推送到绘图上下文上。

PushEffect(BitmapEffect, BitmapEffectInput)
已过时。

将指定的 BitmapEffect 推送到绘图上下文上。

PushGuidelineSet(GuidelineSet)

将指定的 GuidelineSet 推送到绘图上下文上。

PushOpacity(Double)

将指定的不透明度设置推送到绘图上下文上。

PushOpacity(Double, AnimationClock)

将指定的不透明度设置推送到绘图上下文上,并应用指定的动画时钟。

PushOpacityMask(Brush)

将指定的不透明蒙板推送到绘图上下文上。

PushTransform(Transform)

将指定的 Transform 推送到绘图上下文上。

ToString()

返回表示当前对象的字符串。

(继承自 Object)
VerifyAccess()

强制调用线程具有此 DispatcherObject 的访问权限。

(继承自 DispatcherObject)
VerifyApiNonstructuralChange()

此成员支持 WPF 基础结构,不打算直接从代码使用。

显式接口实现

IDisposable.Dispose()

此成员支持Windows Presentation Foundation (WPF) 基础结构,不打算直接从代码使用。

适用于

另请参阅