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 извлекается из DrawingVisual и использует его для изображения прямоугольника.
// 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 . Получается 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
Комментарии
Используйте для DrawingContext заполнения Visual или визуальным Drawing содержимым.
Несмотря на DrawingContext то, что методы draw похожи на методы System.Drawing.Graphics draw типа , они работают по-разному: DrawingContext используется с системой графики с сохраненным режимом, а System.Drawing.Graphics тип используется с графической системой немедленного режима. При использовании команд рисования объекта DrawingContext фактически сохраняется набор инструкций отрисовки (хотя фактический механизм сохранения зависит от типа объекта, обеспечивающего DrawingContext), которые позже будут использованы графической системой; рисование на экране в реальном времени не выполняется. Дополнительные сведения о работе графической системы Windows Presentation Foundation (WPF) см. в разделе Общие сведения о отрисовке графики WPF.
Создать экземпляр DrawingContext напрямую невозможно, но можно получить контекст рисования с помощью определенных методов, таких как DrawingGroup.Open и DrawingVisual.RenderOpen.
Свойства
Dispatcher |
Возвращает объект Dispatcher, с которым связан этот объект DispatcherObject. (Унаследовано от DispatcherObject) |
Методы
CheckAccess() |
Определяет, имеет ли вызывающий поток доступ к этому DispatcherObject. (Унаследовано от DispatcherObject) |
Close() |
Закрывает DrawingContext и сбрасывает содержимое. После этого изменение DrawingContext становится невозможным. |
DisposeCore() |
Освобождает все ресурсы, занятые модулем DrawingContext. |
DrawDrawing(Drawing) |
Рисует заданный объект Drawing. |
DrawEllipse(Brush, Pen, Point, AnimationClock, Double, AnimationClock, Double, AnimationClock) |
Рисует эллипс заданными Brush и Pen и применяет заданные часы анимации. |
DrawEllipse(Brush, Pen, Point, Double, Double) | |
DrawGeometry(Brush, Pen, Geometry) |
Рисует указанный объект Geometry, используя заданные Brush и Pen. |
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) |
Рисует прямоугольник заданными Brush и Pen. И перо, и кисть могут одновременно иметь значение |
DrawRectangle(Brush, Pen, Rect, AnimationClock) |
Рисует прямоугольник заданными Brush и Pen и применяет заданные часы анимации. |
DrawRoundedRectangle(Brush, Pen, Rect, AnimationClock, Double, AnimationClock, Double, AnimationClock) |
Рисует прямоугольник с закругленными углами заданными Brush и Pen и применяет заданные часы анимации. |
DrawRoundedRectangle(Brush, Pen, Rect, Double, Double) |
Рисует прямоугольник с закругленными углами заданными Brush и Pen. |
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) и не предназначен для использования непосредственно из кода. |