Trabalhar com Texturas em Ficheiro PS | Python

Adicionar Padrão de Textura em Azulejos em Documento PS

Um padrão de textura em azulejos refere-se a uma imagem utilizada para preencher ou desenhar objetos, como formas ou texto. Quando o tamanho da imagem é inferior ao do objeto, esta é repetida nas direções X e Y para cobrir adequadamente as áreas necessárias.

Esta repetição da imagem dentro dos objetos gráficos é conhecida como azulejo. Para definir pintura ou traço num PsDocument, é necessário fornecer um objeto da classe aspose.pydrawing.Brush para pintura e um objeto da classe aspose.pydrawing.Pen para traço nos seus respetivos métodos.

O Aspose.Page para Python através da biblioteca .NET processa todas as classes importantes implementadas pelo aspose.pydrawing.Brush oferecidas pela plataforma Python. São eles: aspose.pydrawing.Color, aspose.pydrawing.TextureBrush, aspose.pydrawing.drawing2d.LinearGradientBrush e aspose.pydrawing.drawing2d.PathGradientBrush. Uma cor de traço em Python é atribuída separadamente das propriedades do traço no objeto aspose.pydrawing.Pen, utilizando novamente aspose.pydrawing.Brush. Assim, o Aspose.Page para Python, através da biblioteca .NET, também pode utilizar um conjunto completo de implementações de pintura para desenhar linhas e delinear formas e texto.

Para pintar objetos gráficos com um padrão texturizado no Aspose.Page para Python através da biblioteca .NET, basta passar aspose.pydrawing.TextureBrush para set_paint() ou um dos métodos fill_text() ou fill_and_stroke_text() que aceitam aspose.pydrawing.Brush como parâmetro.

Para contornar os objetos gráficos com um padrão texturizado, deve também passar o objeto aspose.pydrawing.TextureBrush para set_paint() ou um dos métodos outline_text() ou fill_and_stroke_text() que aceitam a pintura de traços como parâmetro.

No exemplo abaixo, demonstramos como preencher uma forma e um texto e contornar um texto com um padrão de mosaico texturado.

Eis uma descrição dos passos para trabalhar com o Padrão de Textura e o PsDocument:

  1. Crie um fluxo de saída para o ficheiro PS resultante.
  2. Inicie um objeto PsSaveOptions com as opções padrão.
  3. Crie um PsDocument de 1 página com um fluxo de saída já criado e opções de guardar.
  4. Crie um novo estado gráfico e translade-o para a posição necessária.
  5. Crie aspose.pydrawing.Bitmap a partir de um ficheiro de imagem.
  6. Crie aspose.pydrawing.TextureBrush a partir da imagem.
  7. Defina a transformação necessária no pincel de textura.
  8. Defina a tinta de textura como a tinta atual no estado gráfico atual do PsDocument.
  9. Crie um percurso retangular.
  10. Preencha o retângulo com a tinta de textura.
  11. Guarde a tinta atual como uma variável local para utilização futura.
  12. Defina a tinta atual com a cor vermelha.
  13. Defina um traço com a largura de 2 pontos aspose.pydrawing.Pen
  14. Contorne o retângulo com o traço atual.
  15. Saia do estado gráfico atual para o estado gráfico de nível superior.
  16. Crie uma fonte system.
  17. Preencha e trace (contorne) o texto. Para preencher a textura, utilize tinta e, para traçar, caneta preta.
  18. Contorne o texto na outra posição com a tinta de textura e uma nova aspose.pydrawing.Pen.
  19. Feche a página.
  20. Guarde o documento.
 1# The path to the documents directory.
 2data_dir = Util.get_data_dir_working_with_textures()
 3
 4# Create an output stream for the PostScript document
 5with open(data_dir + "AddTextureTilingPattern_outPS.ps", "wb") as out_ps_stream:
 6    # Create the save options with the A4 size
 7    options = PsSaveOptions()
 8    
 9    # Create a new 1-paged PS Document
10    document = PsDocument(out_ps_stream, options, False)
11    
12    
13    document.write_graphics_save()
14    document.translate(200, 100)
15    
16    #Create a Bitmap object from an image file
17    with aspose.pydrawing.Bitmap(data_dir + "TestTexture.bmp") as image:
18        # Create a texture brush from the image
19        brush = aspose.pydrawing.TextureBrush(image, aspose.pydrawing.drawing2d.WrapMode.TILE)
20        
21        # Add scaling in the X direction to the mattern
22        transform = aspose.pydrawing.drawing2d.Matrix(float(2), float(0), float(0), float(1), float(0), float(0))
23        brush.transform = transform
24        
25        # Set this texture brush as a current paint
26        document.set_paint(brush)
27    
28    # Create a rectangle path
29    path = aspose.pydrawing.drawing2d.GraphicsPath()
30    path.add_rectangle(aspose.pydrawing.RectangleF(0, 0, 200, 100))
31    
32    # Fill the rectangle
33    document.fill(path)
34    
35    # Get the current paint
36    paint = document.get_paint()
37    
38    # Set a red stroke
39    pen1 = aspose.pydrawing.Pen(aspose.pydrawing.Color.red)
40    pen1.width = float(2)
41    document.set_stroke(pen1)
42
43    # Stroke the rectangle
44    document.draw(path)
45    
46    document.write_graphics_restore()
47    
48    # Fill the text with the texture pattern                
49    font = aspose.page.ExternalFontCache.create_font_by_family_name("Arial", 96, aspose.pydrawing.FontStyle.BOLD)
50    pen2 = aspose.pydrawing.Pen(aspose.pydrawing.Color.black)
51    pen2.width = float(2)
52    document.fill_and_stroke_text("ABC", font, 200, 300, paint, pen2)
53    
54    # Outline the text with the texture pattern
55    pen3 = aspose.pydrawing.Pen(aspose.pydrawing.Color.black)
56    pen3.brush = paint
57    pen3.width = float(5)
58    document.outline_text("ABC", font, 200, 400, pen3)
59    
60    # Close the current page
61    document.close_page()
62    
63    # Save the document
64    document.save()

Veja como trabalhar com texturas em documentos PS em .NET, Java.

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

Adicionar Padrão de Mosaico de Textura

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.