Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La classe Graphics est au cœur de GDI+. Pour dessiner quoi que ce soit, vous obtenez un objet Graphics, définissez ses propriétés et appelez ses méthodes DrawLine, DrawImage, DrawString, etc.
L’exemple suivant appelle la méthode DrawRectangle d’un objet Graphics. Le premier argument passé à la méthode DrawRectangle est un objet Pen.
Dim graphics As Graphics = e.Graphics
Dim pen As New Pen(Color.Blue) ' Opaque blue
graphics.DrawRectangle(pen, 10, 10, 200, 100)
Graphics graphics = e.Graphics;
Pen pen = new Pen(Color.Blue); // Opaque blue
graphics.DrawRectangle(pen, 10, 10, 200, 100);
État graphique
Un objet Graphics fait plus que fournir des méthodes de dessin, telles que DrawLine et DrawRectangle. Un objet Graphics conserve également l’état graphique, qui peut être divisé en catégories suivantes :
Paramètres de qualité
Transformations
Région de découpage
Paramètres de qualité
Un objet Graphics a plusieurs propriétés qui influencent la qualité des éléments dessinés. Par exemple, vous pouvez définir la propriété TextRenderingHint pour spécifier le type d’anticrénelage (le cas échéant) appliqué au texte. D’autres propriétés qui influencent la qualité sont SmoothingMode, CompositingMode, CompositingQualityet InterpolationMode.
L’exemple suivant dessine deux ellipses, une avec le mode lissage défini sur AntiAlias et une avec le mode lissage défini sur HighSpeed:
Dim graphics As Graphics = e.Graphics
Dim pen As New Pen(Color.Blue)
graphics.SmoothingMode = SmoothingMode.AntiAlias
graphics.DrawEllipse(pen, 0, 0, 200, 100)
graphics.SmoothingMode = SmoothingMode.HighSpeed
graphics.DrawEllipse(pen, 0, 150, 200, 100)
Graphics graphics = e.Graphics;
Pen pen = new Pen(Color.Blue);
graphics.SmoothingMode = SmoothingMode.AntiAlias;
graphics.DrawEllipse(pen, 0, 0, 200, 100);
graphics.SmoothingMode = SmoothingMode.HighSpeed;
graphics.DrawEllipse(pen, 0, 150, 200, 100);
Transformations
Un objet Graphics conserve deux transformations (monde et page) appliquées à tous les éléments dessinés par cet objet Graphics. Toute transformation affine peut être stockée dans la transformation mondiale. Les transformations affines incluent la mise à l’échelle, la rotation, la réflexion, l’inclinaison et la translation. La transformation de page peut être utilisée pour la mise à l’échelle et pour modifier les unités (par exemple, pixels en pouces). Pour plus d’informations, consultez Systèmes de coordonnées et transformations.
L’exemple suivant définit le monde et les transformations de page d’un objet Graphics. La transformation du monde est définie par une rotation de 30 degrés. La transformation de page est définie afin que les coordonnées passées à la deuxième DrawEllipse soient traitées comme des millimètres au lieu de pixels. Le code effectue deux appels identiques à la méthode DrawEllipse. La transformation mondiale est appliquée au premier appel de DrawEllipse, et les transformations mondiale et de page sont appliquées au deuxième appel de DrawEllipse.
Dim graphics As Graphics = e.Graphics
Dim pen As New Pen(Color.Red)
graphics.ResetTransform()
graphics.RotateTransform(30) ' world transformation
graphics.DrawEllipse(pen, 0, 0, 100, 50)
graphics.PageUnit = GraphicsUnit.Millimeter ' page transformation
graphics.DrawEllipse(pen, 0, 0, 100, 50)
Graphics graphics = e.Graphics;
Pen pen = new Pen(Color.Red);
graphics.ResetTransform();
graphics.RotateTransform(30); // world transformation
graphics.DrawEllipse(pen, 0, 0, 100, 50);
graphics.PageUnit = GraphicsUnit.Millimeter; // page transformation
graphics.DrawEllipse(pen, 0, 0, 100, 50);
L’illustration suivante montre les deux ellipses. Remarquez que la rotation de 30 degrés s'effectue autour de l'origine du système de coordonnées (angle supérieur gauche de la zone client), et non pas autour des centres des ellipses. Notez également que la largeur du stylet de 1 signifie 1 pixel pour le premier ellipse et 1 millimètre pour le deuxième ellipse.
Région de découpage
Un objet Graphics gère une région de découpage qui s’applique à tous les éléments dessinés par l'objet Graphics. Vous pouvez définir la région de découpage en appelant la méthode SetClip.
L’exemple suivant crée une zone en forme de plus en formant l’union de deux rectangles. Cette région est désignée comme la région de découpage d’un objet Graphics. Ensuite, le code dessine deux lignes qui sont limitées à l’intérieur de la zone de découpage.
Dim graphics As Graphics = e.Graphics
' Opaque red, width 5
Dim pen As New Pen(Color.Red, 5)
' Opaque aqua
Dim brush As New SolidBrush(Color.FromArgb(255, 180, 255, 255))
' Create a plus-shaped region by forming the union of two rectangles.
Dim [region] As New [Region](New Rectangle(50, 0, 50, 150))
[region].Union(New Rectangle(0, 50, 150, 50))
graphics.FillRegion(brush, [region])
' Set the clipping region.
graphics.SetClip([region], CombineMode.Replace)
' Draw two clipped lines.
graphics.DrawLine(pen, 0, 30, 150, 160)
graphics.DrawLine(pen, 40, 20, 190, 150)
Graphics graphics = e.Graphics;
// Opaque red, width 5
Pen pen = new Pen(Color.Red, 5);
// Opaque aqua
SolidBrush brush = new SolidBrush(Color.FromArgb(255, 180, 255, 255));
// Create a plus-shaped region by forming the union of two rectangles.
Region region = new Region(new Rectangle(50, 0, 50, 150));
region.Union(new Rectangle(0, 50, 150, 50));
graphics.FillRegion(brush, region);
// Set the clipping region.
graphics.SetClip(region, CombineMode.Replace);
// Draw two clipped lines.
graphics.DrawLine(pen, 0, 30, 150, 160);
graphics.DrawLine(pen, 40, 20, 190, 150);
L’illustration suivante montre les lignes clippées :
Voir aussi
.NET Desktop feedback