Hoy lo que vamos a intentar es imprimir directamente una etiqueta sin utilizar Crystal Reports y utilizando la clase PrintDocument.
ESPACIOS DE NOMBRES NECESARIOS
using System.Drawing;
using System.Drawing.Printing;
IMPRIMIR Y PREVISUALIZAR UN DOCUMENTO
Lo primero que vamos a definir es un método que nos permita imprimir el documento
C#:
private void btnPrint_Click(object sender, EventArgs e)
{
printDialog1.Document = new PrintDocument();
PrintPreviewDialog VistaPrevia = new PrintPreviewDialog();
DialogResult result = printDialog1.ShowDialog();
if (result == DialogResult.OK)
{
printDialog1.Document.PrinterSettings = printDialog1.PrinterSettings;
printDialog1.Document.PrintPage += PrintPage;
VistaPrevia.Document = printDialog1.Document;
VistaPrevia.ShowDialog();
printDialog1.Document.Print();
}
}
Lo que hemos realizado aquí es instanciar el documento como PrintDocument y una VistaPrevia como Dialogo de vista Previa (+info)
como hemos comenzado por el tejado, ahora lo que tenemos que definir es QUÉ queremos imprimir, que será el PrintPage que pasamos como parámetro.
Aquí tenemos varias opciones
Para escribir un texto, hemos de informar del texto, la fuente y tamaño, el formato de la fuente y finalmente la posición. Para finalmente utilizar el metodo DrawString
C#:
// Draw barcode.
barcodeControl1.Barcode.Draw(ev.Graphics);
// Draw title
String drawString = "Esto es una Prueba del texto";
// Create font and brush.
Font drawFont = new Font("Arial", 12);
SolidBrush drawBrush = new SolidBrush(Color.Black);
// Create point for upper-left corner of drawing.
PointF drawPoint = new PointF(150.0F, 150.0F);
ev.Graphics.DrawString(drawString, drawFont, drawBrush, drawPoint);
IMPRIMIR UNA LINEA DE TEXTO
C#:
public void DrawLinesPoint(PaintEventArgs e)
{
// Create pen.
Pen pen = new Pen(Color.Black, 3);
// Create array of points that define lines to draw.
Point[] points =
{
new Point(10, 10),
new Point(10, 100),
new Point(200, 50),
new Point(250, 300)
};
//Draw lines to screen.
e.Graphics.DrawLines(pen, points);
}
IMPRIMIR UNA IMAGEN
C#:
public void DrawImage (
Image image,
Point[] destPoints
)
C#:
</code>Image newImage=Image.FromFile("D:imagen.png";
//Impresión de la imagen en tamaño original
ev.Graphics.DrawImage(newImage, 20, 80);
//Impresión de la Imagen asignando el tamaño
ev.Graphics.DrawImage(newImage, 20, 200, 20, 20);
<code>
Comentarios:
el primer comando es DrawImage(Imagen, coordenada X, coordenada Y), donde las coordenadas deben ser puntos enteros
el segundo comando DrawImage utilizado es (DrawImage(Imagen, coordenada X, coordenada Y, Tamaño ancho, Tamaño alto) donde tanto las coordenadas como los tamaños deben ser números enteros.
DIBUJAR UNA LINEA O RECTANGULO
Siguiendo todo lo anterior, dibujar una línea o un rectangulo es bastante similar.
la opción más sencilla para la línea es la siguiente:
Primero es necesario definir el puntero (pen), donde le indicaremos el color y el grosor del puntero
y posteriormente con DrawLine, indicaremos, el puntero, la coordenada inicial (X1,Y1) y la Coordenada final (X2,Y2)
C#:
Pen lapiz = new Pen(Color.Black,2);
ev.Graphics.DrawLine(lapiz,10, 200,200,200);
Para el rectangulo, es similar a la línea, si bien las coordenadas que facilitamos son las del punto inicial (esquina izquierda superior) y las del punto final (esquina derecha inferior)
C#:
// Create pen.
Pen blackPen = new Pen(Color.Black, 3);
// Create rectangle.
Rectangle rect = new Rectangle(0, 0, 200, 200);
// Draw rectangle to screen.
e.Graphics.DrawRectangle(blackPen, rect);
}
OTRAS OPCIONES
A parte de dibujar/imprimir todo lo anterior podemos realizar lo siguiente:
elipses
arcos
polígonos
Rellenar las figuras que hemos dibujado (fillrectangle, fillpolygon, fillregion, etc.)

