Dessiner des images en utilisant Graphics
Dessiner des images en utilisant Graphics
Avec la bibliothèque Aspose.PSD, vous pouvez dessiner des formes simples telles que des lignes, des rectangles et des cercles, ainsi que des formes complexes comme des polygones, des courbes, des arcs et des formes de Bézier. La bibliothèque Aspose.PSD crée de telles formes en utilisant la classe Graphics qui réside dans l’espace de noms Aspose.PSD. Les objets Graphics sont responsables de l’exécution de différentes opérations de dessin sur une image, modifiant ainsi la surface de l’image. La classe Graphics utilise une variété d’objets d’aide pour améliorer les formes :
· Stylos, pour dessiner des lignes, des contours de formes ou rendre d’autres représentations géométriques.
· Brosses, pour définir comment les zones sont remplies.
· Polices, pour définir la forme des caractères du texte.
Dessin avec la classe Graphics
Voici un exemple de code démontrant l’utilisation de la classe Graphics. Le code source de l’exemple a été divisé en plusieurs parties pour le rendre simple et facile à suivre. Étape par étape, les exemples montrent comment :
- Créer une image.
- Créer et initialiser un objet Graphics.
- Effacer la surface.
- Dessiner une ellipse.
- Dessiner un polygone rempli et enregistrer l’image.
Exemples de programmation
Création d’une image
Commencez par créer une image en utilisant l’une des méthodes décrites dans Création de fichiers.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string loadpath = dataDir + "sample.psd"; | |
string outpath = dataDir + "CoreDrawingFeatures.bmp"; | |
// Create an instance of Image | |
using (PsdImage image = new PsdImage(loadpath)) | |
{ | |
// load pixels | |
var pixels = image.LoadArgb32Pixels(new Rectangle(0, 0, 100, 10)); | |
for (int i = 0; i < pixels.Length; i++) | |
{ | |
// specify pixel color value (gradient in this case). | |
pixels[i] = i; | |
} | |
// save modified pixels. | |
image.SaveArgb32Pixels(new Rectangle(0, 0, 100, 10), pixels); | |
// export image to bmp file format. | |
image.Save(outpath, new BmpOptions()); | |
} |
Créer et initialiser un objet Graphics
Ensuite, créez et initialisez un objet Graphics en passant l’objet Image à son constructeur.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string outpath = dataDir + "Arc.bmp"; | |
// Create an instance of BmpOptions and set its various properties | |
BmpOptions saveOptions = new BmpOptions(); | |
saveOptions.BitsPerPixel = 32; | |
// Create an instance of Image | |
using (Image image = new PsdImage(100, 100)) | |
{ | |
// Create and initialize an instance of Graphics class and clear Graphics surface | |
Graphics graphic = new Graphics(image); | |
graphic.Clear(Color.Yellow); | |
// Draw an arc shape by specifying the Pen object having red black color and coordinates, height, width, start & end angles | |
int width = 100; | |
int height = 200; | |
int startAngle = 45; | |
int sweepAngle = 270; | |
// Draw arc to screen and save all changes. | |
graphic.DrawArc(new Pen(Color.Black), 0, 0, width, height, startAngle, sweepAngle); | |
// export image to bmp file format. | |
image.Save(outpath, saveOptions); | |
} |
Effacer la surface
Effacez la surface Graphics en appelant la méthode Clear de la classe Graphics et passez la couleur comme paramètre. Cette méthode remplit la surface Graphics avec la couleur passée en argument.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
// Create an instance of Image | |
using (PsdImage image = new PsdImage(500, 500)) | |
{ | |
var graphics = new Graphics(image); | |
// Clear the image surface with white color and Create and initialize a Pen object with blue color | |
graphics.Clear(Color.White); | |
var pen = new Pen(Color.Blue); | |
// Draw Ellipse by defining the bounding rectangle of width 150 and height 100 also Draw a polygon using the LinearGradientBrush | |
graphics.DrawEllipse(pen, new Rectangle(10, 10, 150, 100)); | |
using (var linearGradientBrush = new LinearGradientBrush(image.Bounds, Color.Red, Color.White, 45f)) | |
{ | |
graphics.FillPolygon(linearGradientBrush, new[] { new Point(200, 200), new Point(400, 200), new Point(250, 350) }); | |
} | |
// export modified image. | |
image.Save(dataDir + "DrawingUsingGraphics_output.bmp", new BmpOptions()); | |
} |
Dessiner une ellipse
Vous pouvez remarquer que la classe Graphics a exposé de nombreuses méthodes pour dessiner et remplir des formes. Vous trouverez la liste complète des méthodes dans la Référence de l’API Aspose.PSD pour .NET. Il existe plusieurs versions surchargées de la méthode DrawEllipse exposée par la classe Graphics. Toutes ces méthodes acceptent un objet Pen comme premier argument. Les paramètres suivants sont passés pour définir le rectangle de délimitation autour de l’ellipse. Pour cet exemple, utilisez la version acceptant un objet Rectangle comme deuxième paramètre pour dessiner une ellipse en utilisant l’objet Pen dans la couleur souhaitée.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string loadpath = dataDir + "sample.psd"; | |
string outpath = dataDir + "CoreDrawingFeatures.bmp"; | |
// Create an instance of Image | |
using (PsdImage image = new PsdImage(loadpath)) | |
{ | |
// load pixels | |
var pixels = image.LoadArgb32Pixels(new Rectangle(0, 0, 100, 10)); | |
for (int i = 0; i < pixels.Length; i++) | |
{ | |
// specify pixel color value (gradient in this case). | |
pixels[i] = i; | |
} | |
// save modified pixels. | |
image.SaveArgb32Pixels(new Rectangle(0, 0, 100, 10), pixels); | |
// export image to bmp file format. | |
image.Save(outpath, new BmpOptions()); | |
} |
Dessiner un polygone rempli
Ensuite, dessinez un polygone en utilisant le LinearGradientBrush et un tableau de points. La classe Graphics a exposé plusieurs versions surchargées de la méthode FillPolygon(). Toutes acceptent un objet Brush comme premier argument, définissant les caractéristiques du remplissage. Le deuxième paramètre est un tableau de points. Veuillez noter que chaque paire de points consécutifs dans le tableau spécifie un côté du polygone.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
// Create an instance of Image | |
using (PsdImage image = new PsdImage(500, 500)) | |
{ | |
var graphics = new Graphics(image); | |
// Clear the image surface with white color and Create and initialize a Pen object with blue color | |
graphics.Clear(Color.White); | |
var pen = new Pen(Color.Blue); | |
// Draw Ellipse by defining the bounding rectangle of width 150 and height 100 also Draw a polygon using the LinearGradientBrush | |
graphics.DrawEllipse(pen, new Rectangle(10, 10, 150, 100)); | |
using (var linearGradientBrush = new LinearGradientBrush(image.Bounds, Color.Red, Color.White, 45f)) | |
{ | |
graphics.FillPolygon(linearGradientBrush, new[] { new Point(200, 200), new Point(400, 200), new Point(250, 350) }); | |
} | |
// export modified image. | |
image.Save(dataDir + "DrawingUsingGraphics_output.bmp", new BmpOptions()); | |
} |
Dessiner des images en utilisant Graphics : Source Complet
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
// Create an instance of Image | |
using (PsdImage image = new PsdImage(500, 500)) | |
{ | |
var graphics = new Graphics(image); | |
// Clear the image surface with white color and Create and initialize a Pen object with blue color | |
graphics.Clear(Color.White); | |
var pen = new Pen(Color.Blue); | |
// Draw Ellipse by defining the bounding rectangle of width 150 and height 100 also Draw a polygon using the LinearGradientBrush | |
graphics.DrawEllipse(pen, new Rectangle(10, 10, 150, 100)); | |
using (var linearGradientBrush = new LinearGradientBrush(image.Bounds, Color.Red, Color.White, 45f)) | |
{ | |
graphics.FillPolygon(linearGradientBrush, new[] { new Point(200, 200), new Point(400, 200), new Point(250, 350) }); | |
} | |
// export modified image. | |
image.Save(dataDir + "DrawingUsingGraphics_output.bmp", new BmpOptions()); | |
} |
Toutes les classes qui implémentent IDisposable et accèdent à des ressources non gérées sont instanciées dans une instruction Using pour garantir qu’elles sont correctement disposées.