Cette page vous a-t-elle été utile ?
Votre avis sur ce contenu est important. N'hésitez pas à nous faire part de vos commentaires.
Vous avez d'autres commentaires ?
1500 caractères restants
DrawingContext, classe
Collapse the table of content
Expand the table of content

DrawingContext, classe

Mise à jour : novembre 2007

Décrit le contenu visuel à l'aide des commandes draw, push et pop.

Espace de noms :  System.Windows.Media
Assembly :  PresentationCore (dans PresentationCore.dll)

public abstract class DrawingContext : DispatcherObject, 
	IDisposable
public abstract class DrawingContext extends DispatcherObject implements IDisposable
public abstract class DrawingContext extends DispatcherObject implements IDisposable
Cette classe est abstraite ; consultez Hiérarchie d'héritage pour connaître les classes non abstraites dérivées qui peuvent être utilisées en XAML.

Utilisez un DrawingContext pour remplir un Visual ou un Drawing avec contenu visuel.

Bien que les DrawingContext dessinent des méthodes semblables aux méthodes d'attraction du type System.Drawing.Graphics, ils fonctionnent très différemment : DrawingContext est utilisé avec un système graphique à mode conservé, tandis que le type System.Drawing.Graphics est utilisé avec un système graphique à mode direct. Lorsque vous utilisez les commandes draw d'un objet DrawingContext, vous stockez réellement un jeu du rendu des instructions (bien que le mécanisme de stockage exact dépende du type d'objet qui fournit le DrawingContext) qui seront utilisées ultérieurement par le système graphique ; vous ne dessinez pas à l'écran en temps réel. Pour plus d'informations sur le fonctionnement du système graphique de Windows Presentation Foundation (WPF), consultez Vue d'ensemble du rendu graphique de Windows Presentation Foundation.

Vous n'instanciez jamais un DrawingContext directement ; vous pouvez toutefois acquérir un contexte de dessin de certaines méthodes, telles que DrawingGroup.Open et DrawingVisual.RenderOpen.

L'exemple suivant récupère un DrawingContext d'un DrawingVisual et l'utilise pour dessiner un 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;
}


L'exemple suivant montre les commandes PushOpacity, PushEffectet Pop. Le DrawingContext est obtenu d'un DrawingGroup et affiché à l'aide d'un contrôle 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;

        }




    }

}


Davantage de code

Comment : ajouter du texte à un VisualL'exemple suivant montre comment ajouter du texte à un DrawingVisual à l'aide d'un objet DrawingContext. Un contexte de dessin est retourné en appelant la méthode RenderOpen de l'objet DrawingVisual. Vous pouvez dessiner des graphiques et saisir un texte dans un contexte de dessin.

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows Vista

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

Pris en charge dans : 3.5, 3.0

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2015 Microsoft