Dibujar imágenes usando Graphics

Dibujar imágenes usando Graphics

Con la librería Aspose.PSD puedes dibujar formas simples como líneas, rectángulos y círculos, así como formas complejas como polígonos, curvas, arcos y formas de Bézier. La librería Aspose.PSD crea tales formas utilizando la clase Graphics que reside en el espacio de nombres Aspose.PSD. Los objetos Graphics son responsables de realizar diferentes operaciones de dibujo en una imagen, cambiando así la superficie de la imagen. La clase Graphics utiliza una variedad de objetos auxiliares para mejorar las formas:

·         Plumas, para dibujar líneas, contornos de formas o representaciones geométricas.

·         Pinceles, para definir cómo se rellenan las áreas.

·         Fuentes, para definir la forma de los caracteres de texto.

Dibujar con la clase Graphics

A continuación se muestra un ejemplo de código que demuestra el uso de la clase Graphics. El código de ejemplo se ha dividido en varias partes para mantenerlo simple y fácil de seguir. Paso a paso, los ejemplos muestran cómo:

  1. Crear una imagen.
  2. Crear e inicializar un objeto Graphics.
  3. Borrar la superficie.
  4. Dibujar una elipse.
  5. Dibujar un polígono relleno y guardar la imagen.

Muestras de programación

Creación de una imagen

Comience creando una imagen utilizando cualquiera de los métodos descritos en Crear archivos.

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

Crear e inicializar un objeto Graphics

Luego cree e inicialice un objeto Graphics pasando el objeto de imagen a su 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);
}

Borrar la superficie

Borre la superficie Graphics llamando al método Clear de la clase Graphics y pase el color como parámetro. Este método rellena la superficie de Graphics con el color pasado como argumento.

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

Dibujar una elipse

Puede notar que la clase Graphics ha expuesto muchas funciones para dibujar y rellenar formas. Encontrará la lista completa de métodos en la Referencia de API de Aspose.PSD para .NET. Hay varias versiones sobrecargadas del método DrawEllipse expuesto por la clase Graphics. Todos estos métodos aceptan un objeto Pen como su primer argumento. Los parámetros posteriores se utilizan para definir el rectángulo delimitador alrededor de la elipse. Para este ejemplo, use la versión que acepta un objeto Rectangle como segundo parámetro para dibujar una elipse utilizando el objeto Pen en el color deseado.

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

Dibujar un polígono relleno

A continuación, dibuje un polígono utilizando LinearGradientBrush y una matriz de puntos. La clase Graphics ha expuesto varias versiones sobrecargadas del método FillPolygon(). Todas estas aceptan un objeto Brush como su primer argumento, definiendo las características del relleno. El segundo parámetro es una matriz de puntos. Tenga en cuenta que cada dos puntos consecutivos en la matriz especifican un lado del polígono.

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

Dibujar imágenes usando Graphics: Código fuente completo

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

Todas las clases que implementan IDisposable y acceden a recursos no administrados se instancian en una declaración Using para asegurarse de que se desechen correctamente.