Het tekenen van afbeeldingen met behulp van Graphics

Het tekenen van afbeeldingen met behulp van Graphics

Met de Aspose.PSD-bibliotheek kun je eenvoudige vormen tekenen zoals lijnen, rechthoeken en cirkels, evenals complexe vormen zoals veelhoeken, curves, bogen en Bezier-vormen. De Aspose.PSD-bibliotheek maakt dergelijke vormen met behulp van de Graphics-klasse die zich bevindt in de Aspose.PSD-namespace. Graphics-objecten zijn verantwoordelijk voor het uitvoeren van verschillende tekenoperaties op een afbeelding, waardoor het oppervlak van de afbeelding verandert. De Graphics-klasse maakt gebruik van diverse hulpobjecten om de vormen te verbeteren:

· Pennen, om lijnen te tekenen, vormen te omlijnen of andere meetkundige representaties weer te geven.

· Penselen, om te definiëren hoe gebieden worden ingekleurd.

· Lettertypes, om de vorm van tekens van tekst te definiëren.

Teken met de Graphics-klasse

Hieronder staat een codevoorbeeld dat het gebruik van de Graphics-klasse demonstreert. De voorbeeldbroncode is opgesplitst in verschillende delen om het eenvoudig en gemakkelijk te volgen te houden. Stap voor stap tonen de voorbeelden hoe je:

  1. Een afbeelding maakt.
  2. Een Graphics-object maakt en initialiseert.
  3. Het oppervlak wist.
  4. Een ellips tekent.
  5. Een opgevulde veelhoek tekent en de afbeelding opslaat.

Programmeervoorbeelden

Een Afbeelding Maken

Begin met het maken van een afbeelding met behulp van een van de methoden die worden beschreven in Het maken van bestanden.

// 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());
}

Maak en Initialiseer een Graphics-Object

Maak vervolgens een Graphics-object en initialiseer het door het Image-object door te gegeven aan de constructor.

// 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);
}

Wis het Oppervlak

Wis het Graphics-oppervlak door de Clear-methode van de Graphics-klasse aan te roepen en een kleur mee te geven als parameter. Deze methode vult het Graphics-oppervlak met de meegegeven kleur.

// 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());
}

Teken een Ellips

Je zult opmerken dat de Graphics-klasse veel methoden heeft blootgesteld om vormen te tekenen en in te vullen. Je vindt de volledige lijst van methoden in de Aspose.PSD voor .NET API Referentie. Er zijn verschillende overload-versies van de DrawEllipse-methode blootgesteld door de Graphics-klasse. Al deze methoden accepteren een Pen-object als eerste argument. De latere parameters worden meegegeven om het begrenzingskader rond de ellips te definiëren. Voor dit voorbeeld, gebruik de versie die een Rectangle-object als tweede parameter accepteert om een ellips te tekenen met het Pen-object in de gewenste kleur.

// 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());
}

Teken een Opgevulde Veelhoek

Teken vervolgens een veelhoek met behulp van de LinearGradientBrush en een reeks punten. De Graphics-klasse heeft verschillende overload-versies van de FillPolygon()-methode blootgesteld. Al deze accepteren een Brush-object als eerste argument, waarbij de kenmerken van de vulling worden gedefinieerd. Het tweede argument is een reeks punten. Let op dat elke twee opeenvolgende punten in de reeks een zijde van de veelhoek specificeren.

// 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());
}

Het tekenen van afbeeldingen met behulp van Graphics : Complete Bron

// 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());
}

Alle klassen die IDisposable implementeren en toegang hebben tot onbeheerde resources worden geïnstantieerd in een Using-statement om ervoor te zorgen dat ze correct worden afgesloten.