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 :

  1. Créez un flux de sortie pour le fichier PS résultant.
  2. Lancez PsSaveOptions.
  3. Créez un PsDocument avec le flux de sortie déjà créé et enregistrez les options.
  4. Créez la forme ou une police en fonction de l’objet que nous allons remplir ou décrire.
  5. Créez un objet aspose.pydrawing.drawing2d.HatchBrush avec le style souhaité.
  6. Définissez la peinture de hachures comme peinture actuelle dans le PsDocument.
  7. 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.
  8. Fermez la page.
  9. 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 :

  1. Définissez la peinture de hachures comme peinture actuelle dans PsDocument.
  2. Créez l’objet aspose.pydrawing.Pen.
  3. Définissez ce trait comme trait actuel dans PsDocument.
  4. 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.
  5. Fermez la page.
  6. 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()

Voir Travailler avec un motif de hachures dans un document PS dans .NET, Java.

Le résultat de l’exécution de ce code est

Ajouter un motif de hachures

Vous pouvez télécharger des exemples et des fichiers de données à partir de GitHub.

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.