Travailler avec des motifs de hachuresdans PS | Python
Ajouter un motif de hachures dans un document PS
Les motifs de hachures, comprenant souvent de simples images en noir et blanc avec différents motifs de hachures, servent de motifs de mosaïque de textures. Dans Aspose.Page pour Python via .NET, ces modèles sont représentés par la classe aspose.pydrawing.drawing2d.HatchBrush, dérivée de aspose.pydrawing.Brush. Contrairement à aspose.pydrawing.TextureBrush, HatchBrush propose des styles prédéfinis nommés, définissant l’image utilisée pour la mosaïque. Aspose.Page pour Python fournit 53 styles de hachures, qui peuvent tous être utilisés pour le remplissage ou le tracé dans PsDocument.
Pour peindre des objets graphiques avec un motif de hachures, créez un HatchBrush avec le style de hachures souhaité et transmettez-le dans set_paint() ou l’une des méthodes fill_text() ou fill_and_Stroke_text() acceptant * aspose.pydrawing.Brush*.
Pour décrire des objets graphiques avec un motif de hachures, définissez le motif de hachures comme peinture actuelle dans PsDocument, créez un nouveau aspose.pydrawing.Pen et transmettez-le à set_stroke() ou à l’un des * Méthodes outline_text()* ou fill_and_Stroke_text() acceptant aspose.pydrawing.Pen.
L’exemple ci-dessous montre le remplissage d’une forme avec un motif de hachures, la présentation de différents styles de hachures en Python, ainsi que le remplissage et le contour du texte avec un motif de hachures.
Voici l’algorithme permettant de peindre des objets graphiques avec un motif de hachures dans un nouveau document PS :
- Créez un flux de sortie pour le fichier PS résultant.
- Lancez PsSaveOptions.
- Créez un PsDocument avec le flux de sortie déjà créé et enregistrez les options.
- Créez la forme ou une police en fonction de l’objet que nous allons remplir ou décrire.
- Créez un objet aspose.pydrawing.drawing2d.HatchBrush avec le style souhaité.
- Définissez la peinture de hachures comme peinture actuelle dans le PsDocument.
- Remplissez la forme avec la peinture actuelle ou remplissez le texte. Si nous utilisons l’une des méthodes de remplissage du texte qui accepte aspose.pydrawing.Brush comme paramètre, l’étape précédente peut être ignorée.
- Fermez la page.
- Enregistrez le document.
Si nous avons besoin de tracer (décrire) les objets graphiques avec un motif de hachures au lieu des 4 dernières étapes auront l’aspect suivant :
- Définissez la peinture de hachures comme peinture actuelle dans PsDocument.
- Créez l’objet aspose.pydrawing.Pen.
- Définissez ce trait comme trait actuel dans PsDocument.
- Décrivez la forme avec la peinture actuelle et tracez ou décrivez le texte. Si nous utilisons l’une des méthodes pour décrire le texte qui accepte aspose.pydrawing.Pen comme paramètre, l’étape précédente peut être ignorée.
- Fermez la page.
- Enregistrez le document.
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()
Le résultat de l’exécution de ce code est
Vous pouvez télécharger des exemples et des fichiers de données à partir de GitHub.