Прочитать на английском

Поделиться через


DrawingContext Класс

Определение

Описывает визуальное содержимое с использованием команд рисования, занесения и извлечения.

public abstract class DrawingContext : System.Windows.Threading.DispatcherObject, IDisposable
Наследование
DrawingContext
Реализации

Примеры

В следующем примере 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;
}

В следующем примере показаны 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;
        }
    }
}

Комментарии

Используйте для 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)

Рисует эллипс заданными Brush и Pen.

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. И перо, и кисть могут одновременно иметь значение null.

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) и не предназначен для использования непосредственно из кода.

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

Продукт Версии
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

См. также раздел