Trabalhar com Padrões de Hachura em ficheiro PS | Python

Adicionar Padrão de Hachura em Documento PS

Os padrões de hachura, geralmente compostos por imagens simples a preto e branco com vários desenhos de hachura, servem como padrões de textura em mosaico. No Aspose.Page para Python via .NET, estes padrões são representados pela classe aspose.pydrawing.drawing2d.HatchBrush, derivada de aspose.pydrawing.Brush. Ao contrário da aspose. pydrawing.TextureBrush, o HatchBrush oferece estilos predefinidos nomeados, definindo a imagem utilizada para o mosaico. O Aspose.Page para Python disponibiliza 53 estilos de hachura, todos os quais podem ser utilizados para preenchimento ou traçado no PsDocument.

Para pintar objetos gráficos com um padrão de hachura, crie um HatchBrush com o estilo de hachura pretendido e passe-o para set_paint() ou um dos métodos fill_text ou fill_and_stroke_text que aceite aspose.pydrawing.Brush.

Para contornar os objetos gráficos com um padrão de hachura, defina o padrão de hachura como a pintura atual em PsDocument, crie uma nova aspose.pydrawing.Pen e passe-a para set_stroke() ou um dos métodos outline_text() ou fill_and_stroke_text() que aceitam aspose.pydrawing.Pen.

O exemplo abaixo demonstra o preenchimento de uma forma com um padrão de hachura, a apresentação de vários estilos de hachura em Python e o preenchimento e contorno de texto com um padrão de hachura.

Este é o algoritmo para pintar objetos gráficos com um padrão de hachura num novo documento PS:

  1. Crie um fluxo de saída para o ficheiro PS resultante.
  2. Inicie PsSaveOptions.
  3. Crie um PsDocument com o fluxo de saída já criado e guarde as opções.
  4. Crie a forma ou fonte consoante o objeto que iremos preencher ou contornar.
  5. Crie um objeto de aspose.pydrawing.drawing2d.HatchBrush com o estilo pretendido.
  6. Defina a pintura de hachura como a pintura atual no PsDocument.
  7. Preencha a forma com a pintura atual ou preencha o texto. Se utilizarmos um dos métodos de preenchimento de texto que aceita aspose.pydrawing.Brush como parâmetro, o passo anterior pode ser ignorado.
  8. Feche a página.
  9. Guarde o documento.

Se precisarmos de traçar (contornar) objetos gráficos com um padrão de hachura em vez dos últimos 4 passos, teremos o seguinte aspeto:

  1. Defina a pintura de hachura como a pintura atual no PsDocument.
  2. Crie o objeto aspose.pydrawing.Pen.
  3. Defina este traço como o traço atual no PsDocument.
  4. Contorne a forma com a pintura atual e trace ou contorne o texto. Se utilizarmos um dos métodos para contornar o texto que aceita aspose.pydrawing.Pen como parâmetro, o passo anterior pode ser ignorado.
  5. Feche a página.
  6. Guarde o 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()

Veja como trabalhar com um padrão de hachura no documento PS em .NET, Java.

O resultado da execução deste código é

Adicionar Padrão de Hachura

Pode descarregar exemplos e ficheiros de dados do GitHub.

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.