Trabajar con patrones de sombreado en PostScript | .NETO

Agregar patrón de sombreado en documento PS

El patrón de sombreado es un patrón de mosaico de textura generalmente representado por una pequeña imagen simple de 2 colores (generalmente blanco y negro). El contenido principal de estas pequeñas imágenes son varios sombreados.

Para pintar por sombreados, la plataforma .NET tiene una clase separada, derivada de System.Drawing.Brush, System.Drawing.HatchBrush. Su diferencia con System.Drawing.TextureBrush es que tiene estilos predefinidos con nombres que definen qué imagen usar para el mosaico. La plataforma .NET ofrece 53 estilos de sombreado y los 52 estilos se pueden usar para rellenar o trazar (delinear) en PsDocument.

Para pintar objetos gráficos con un patrón de sombreado en la biblioteca Aspose.Page para .NET, basta con pasar System.Drawing.HatchBrush a SetPaint() o uno de los FillText () o FillAndStrokeText() métodos que aceptan System.Drawing.Brush como parámetro.

Para delinear objetos gráficos con un patrón de sombreado en Aspose.Page para la biblioteca .NET, alguien debe crear un nuevo System.Drawing.Pen con System.Drawing.HacthBrush y pasarlo a SetStroke () o uno de los métodos OutlineText() o FillAndStrokeText() que aceptan System.Drawing.Pen como parámetro.

En el siguiente ejemplo, demostramos, en primer lugar, cómo rellenar una forma con un patrón de sombreado, luego toda la variedad de estilos de sombreado en .NET y, finalmente, cómo rellenar y delinear un texto con un patrón de sombreado.

Un algoritmo para pintar objetos gráficos con un patrón de sombreado en un nuevo documento PS incluye los siguientes pasos:

  1. Cree una secuencia de salida para el archivo PS resultante.
  2. Cree PsSaveOptions.
  3. Cree PsDocument con el flujo de salida ya creado y las opciones de guardado.
  4. Cree la ruta gráfica o la fuente necesaria según el objeto que vayamos a rellenar o delinear.
  5. Crea un objeto de System.Drawing.HatchBrush con el estilo deseado.
  6. Configure el pincel de sombreado como pintura actual en PsDocument.
  7. Rellene la ruta de los gráficos con la pintura actual o rellene un texto. Si utilizamos uno de los métodos para rellenar un texto que acepta System.Drawing.Brush como parámetro, se puede ignorar el punto anterior.
  8. Cierra la página.
  9. Guarde el documento.

Si necesitamos trazar (delinear) objetos gráficos con un patrón de sombreado en lugar de los últimos 4 puntos, lo siguiente será:

  1. Cree el objeto System.Drawing.Pen con el pincel de sombreado.

  2. Establezca este lápiz como trazo actual en PsDocument.

  3. Delinee la ruta de los gráficos con el trazo actual o delinee el texto. Si utilizamos uno de los métodos para delinear el texto que acepta System.Drawing.Pen como parámetro, se puede ignorar el punto anterior.

  4. Cierra la página.

  5. Guarde el documento.

 1//Create an output stream for PostScript document
 2using (Stream outPsStream = new FileStream(dataDir + "AddHatchPattern_outPS.ps", FileMode.Create))
 3{
 4    //Create save options with A4 size
 5    PsSaveOptions options = new PsSaveOptions();
 6
 7    // Create new 1-paged PS Document
 8    PsDocument document = new PsDocument(outPsStream, options, false);
 9
10    int x0 = 20;
11    int y0 = 100;
12    int squareSide = 32;
13    int width = 500;
14    int sumX = 0;
15
16    //Create a graphics state
17    document.WriteGraphicsSave();
18
19    //Translate the graphics state to initial point
20    document.Translate(x0, y0);
21
22    //Create a rectangle path for every pattern square
23    GraphicsPath path = new GraphicsPath();
24    path.AddRectangle(new RectangleF(0, 0, squareSide, squareSide));
25
26    //Create a pen for outlining pattern square
27    Pen pen = new Pen(Color.Black, 2);
28
29    //For every hatch pattern style 
30    for (HatchStyle hatchStyle = 0; hatchStyle <= (HatchStyle)52; hatchStyle++)
31    {
32        //Set the paint with current hatch brush style
33        document.SetPaint(new HatchBrush(hatchStyle, Color.Black, Color.White));
34
35        //Calculate a displacement in order to don't go beyond the page bounds
36        int x = squareSide;
37        int y = 0;
38        if (sumX >= width)
39        {
40            x = -(sumX - squareSide);
41            y += squareSide;
42        }
43        //Translate current graphics state
44        document.Translate(x, y);
45        //Fill the pattern square
46        document.Fill(path);
47        //Set the stroke
48        document.SetStroke(pen);
49        //Draw the square outline
50        document.Draw(path);
51
52        //Calculate a distance from X0
53        if (sumX >= width)
54        {
55            sumX = squareSide;
56        }
57        else
58            sumX += x;
59    }
60
61    //Exit from current graphics state to upper level graphics state
62    document.WriteGraphicsRestore();
63
64    //Fill the text with the hatch pattern
65    HatchBrush brush = new HatchBrush(HatchStyle.DiagonalCross, Color.Red, Color.Yellow);
66    Font font = new Font("Arial", 96, FontStyle.Bold);
67    document.FillAndStrokeText("ABC", font, 200, 300, brush, pen);
68
69    //Outline the text with hatch pattern
70    brush = new HatchBrush(HatchStyle.Percent50, Color.Blue, Color.White);                
71    document.OutlineText("ABC", font, 200, 400, new Pen(brush, 5));
72
73
74    //Close current page
75    document.ClosePage();
76
77    //Save the document
78    document.Save();
79}

Para Linux, MacOS y otros sistemas operativos distintos de Windows, ofrecemos utilizar nuestro paquete Nuget Aspose.Page.Drawing. Utiliza el backend Aspose.Drawing en lugar de la biblioteca del sistema System.Drawing.

Así que importe el espacio de nombres Aspose.Page.Drawing en lugar de System.Drawing. En el fragmento de código anterior se utilizará Aspose.Page.Drawing.Rectangle en lugar de System.Drawing.Rectangle, Se utilizará Aspose.Page.Drawing.Drawing2D.GraphicsPath en lugar de System.Drawing.Drawing2D.GraphicsPath, etc. Nuestros ejemplos de código en GitHub contienen todas las sustituciones necesarias.

Consulte cómo trabajar con un patrón de tramado en un documento PS en Java.


El resultado de ejecutar este código aparece como

Agregar patrón de sombreado

Puede descargar ejemplos y archivos de datos desde GitHub.

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.