Trabajar con patrones de sombreado en PostScript | .NET
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:
- Cree una secuencia de salida para el archivo PS resultante.
- Cree PsSaveOptions.
- Cree PsDocument con el flujo de salida ya creado y las opciones de guardado.
- Cree la ruta gráfica o la fuente necesaria según el objeto que vayamos a rellenar o delinear.
- Crea un objeto de System.Drawing.HatchBrush con el estilo deseado.
- Configure el pincel de sombreado como pintura actual en PsDocument.
- 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.
- Cierra la página.
- 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á:
Cree el objeto System.Drawing.Pen con el pincel de sombreado.
Establezca este lápiz como trazo actual en PsDocument.
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.
Cierra la página.
Guarde el documento.
1// Demonstrates all embedded hatch patterns that can be used to paint or outline shapes or text in PS document.
2
3string outputFileName = "AddHatchPattern_outPS.ps";
4
5//Create save options with A4 size
6PsSaveOptions options = new PsSaveOptions();
7
8// Create new 1-paged PS Document
9PsDocument document = new PsDocument(OutputDir + outputFileName, options, false);
10
11int x0 = 20;
12int y0 = 100;
13int squareSide = 32;
14int width = 500;
15int sumX = 0;
16
17//Restore graphics state
18document.WriteGraphicsSave();
19
20//Translate to initial point
21document.Translate(x0, y0);
22
23//Create rectngle path for every pattern square
24GraphicsPath path = new GraphicsPath();
25path.AddRectangle(new RectangleF(0, 0, squareSide, squareSide));
26
27//Create pen for outlining pattern square
28Pen pen = new Pen(Color.Black, 2);
29
30//For every hatch pattern style
31for (HatchStyle hatchStyle = 0; hatchStyle <= (HatchStyle)52; hatchStyle++)
32{
33 //Set paint with current hatch brush style
34 document.SetPaint(new HatchBrush(hatchStyle, Color.Black, Color.White));
35
36 //Calculate displacement in order to don't go beyond the page bounds
37 int x = squareSide;
38 int y = 0;
39 if (sumX >= width)
40 {
41 x = -(sumX - squareSide);
42 y += squareSide;
43 }
44 //Translate current graphics state
45 document.Translate(x, y);
46 //Fill pattern square
47 document.Fill(path);
48 //Set stroke
49 document.SetStroke(pen);
50 //Draw square outline
51 document.Draw(path);
52
53 //Calculate distance from X0
54 if (sumX >= width)
55 {
56 sumX = squareSide;
57 }
58 else
59 sumX += x;
60}
61
62//Restore graphics state
63document.WriteGraphicsRestore();
64
65//Fill text with hatch pattern
66HatchBrush brush = new HatchBrush(HatchStyle.DiagonalCross, Color.Red, Color.Yellow);
67System.Drawing.Font font = new System.Drawing.Font("Arial", 96, FontStyle.Bold);
68document.FillAndStrokeText("ABC", font, 200, 300, brush, pen);
69
70//Outline text with hatch pattern
71brush = new HatchBrush(HatchStyle.Percent50, Color.Blue, Color.White);
72document.OutlineText("ABC", font, 200, 400, new Pen(brush, 5));
73
74//Close current page
75document.ClosePage();
76
77//Save the document
78document.Save();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

Puede descargar ejemplos y archivos de datos desde GitHub.