Trabajar con patrones de sombreado en un archivo PS | Pitón
Agregar patrón de sombreado en documento PS
Los patrones de sombreado, que a menudo comprenden imágenes simples en blanco y negro con varios diseños de sombreado, sirven como patrones de mosaico de textura. En Aspose.Page para Python vía .NET, estos patrones están representados por la clase aspose.pydrawing.drawing2d.HatchBrush, derivada de aspose.pydrawing.Brush. A diferencia de aspose.pydrawing.TextureBrush, HatchBrush ofrece estilos predefinidos con nombre, que definen la imagen utilizada para el mosaico. Aspose.Page para Python proporciona 53 estilos de sombreado, todos los cuales se pueden utilizar para rellenar o trazar en PsDocument.
Para pintar objetos gráficos con un patrón de sombreado, cree un HatchBrush con el estilo de sombreado deseado y páselo a set_paint() o a uno de los métodos fill_text() o fill_and_stroke_text() aceptando * aspose.pydrawing.Brush*.
Para delinear objetos gráficos con un patrón de sombreado, establezca el patrón de sombreado como la pintura actual en PsDocument, cree un nuevo aspose.pydrawing.Pen y páselo a set_stroke() o uno de los * outline_text()* o fill_and_stroke_text() métodos que aceptan aspose.pydrawing.Pen.
El siguiente ejemplo muestra cómo rellenar una forma con un patrón de sombreado, muestra varios estilos de sombreado en Python y cómo rellenar y delinear texto con un patrón de sombreado.
Este es el algoritmo para pintar objetos gráficos con un patrón de sombreado en un nuevo documento PS:
- Cree una secuencia de salida para el archivo PS resultante.
- Inicie PsSaveOptions.
- Cree un PsDocument con el flujo de salida ya creado y las opciones de guardado.
- Crea la forma o una fuente dependiendo del objeto que vamos a rellenar o delinear.
- Cree un objeto de aspose.pydrawing.drawing2d.HatchBrush con el estilo deseado.
- Establezca la pintura del sombreado como pintura actual en PsDocument.
- Rellena la forma con la pintura actual o rellena el texto. Si utilizamos uno de los métodos para rellenar el texto que acepta aspose.pydrawing.Brush como parámetro, se puede omitir el paso 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 pasos, tendremos el siguiente aspecto:
- Establezca la pintura del sombreado como pintura actual en PsDocument.
- Cree el objeto aspose.pydrawing.Pen.
- Establezca este trazo como trazo actual en PsDocument.
- Delinee la forma con la pintura actual y trace o delinee el texto. Si utilizamos uno de los métodos para delinear el texto que acepta aspose.pydrawing.Pen como parámetro, se puede ignorar el paso anterior.
- Cierra la página.
- Guarde el documento.
1# The path to the documents directory.
2data_dir = Util.get_data_dir_working_with_hatches()
3
4# Create an output stream for the PostScript document
5with open(data_dir + "AddHatchPattern_outPS.ps", "wb") as out_ps_stream:
6 # Create the save options with A4 size
7 options = PsSaveOptions()
8
9 # Create a new 1-paged PS Document
10 document = PsDocument(out_ps_stream, options, False)
11
12 x0 = 20.
13 y0 = 100.
14 square_side = 32.
15 width = 500.
16 sum_x = 0.
17
18 # Restore a graphics state
19 document.write_graphics_save()
20
21 # Translate to initial point
22 document.translate(x0, y0)
23
24 # Create a rectngle path for every pattern square
25 path = aspose.pydrawing.drawing2d.GraphicsPath()
26 path.add_rectangle(aspose.pydrawing.RectangleF(0, 0, square_side, square_side))
27
28 # Create a pen for outlining the pattern square
29 pen = GraphicsFactory.create_pen_by_color_and_width(aspose.pydrawing.Color.black, 2)
30
31 # For every hatch pattern style
32 hatch_style = 0
33 while hatch_style <= 52:
34 # Set the paint with the current hatch brush style
35 document.set_paint(aspose.pydrawing.drawing2d.HatchBrush(aspose.pydrawing.drawing2d.HatchStyle(hatch_style),
36 aspose.pydrawing.Color.black, aspose.pydrawing.Color.white))
37
38 # Calculate the displacement not to go beyond the page bounds
39 x = square_side
40 y = 0
41 if sum_x >= width:
42 x = -(sum_x - square_side)
43 y += square_side
44 # Translate the current graphics state
45 document.translate(x, y)
46 # Fill the pattern square
47 document.fill(path)
48 # Set the stroke
49 document.set_stroke(pen)
50 # Draw the square outline
51 document.draw(path)
52
53 # Calculate the distance from X0
54 if sum_x >= width:
55 sum_x = square_side
56 else:
57 sum_x += x
58 hatch_style += 1
59
60 # Restore the graphics state
61 document.write_graphics_restore()
62
63 # Fill the text with the hatch pattern
64 brush = aspose.pydrawing.drawing2d.HatchBrush(aspose.pydrawing.drawing2d.HatchStyle.DIAGONAL_CROSS,
65 aspose.pydrawing.Color.red, aspose.pydrawing.Color.yellow)
66 font = ExternalFontCache.fetch_dr_font("Arial", 96, aspose.pydrawing.FontStyle.BOLD)
67 document.fill_and_stroke_text("ABC", font, 200, 300, brush, pen)
68
69 # Outline text with the hatch pattern
70 brush = aspose.pydrawing.drawing2d.HatchBrush(aspose.pydrawing.drawing2d.HatchStyle.PERCENT50,
71 aspose.pydrawing.Color.blue, aspose.pydrawing.Color.white)
72 document.outline_text("ABC", font, 200, 400, GraphicsFactory.create_pen_by_brush_and_width(brush, 5))
73
74
75 # Close the current page
76 document.close_page()
77
78 # Save the document
79 document.save()
El resultado de ejecutar este código es
Puede descargar ejemplos y archivos de datos desde GitHub.