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

Adicionar Padrão de Hachura em Documento PS

O padrão de hachura é um padrão de textura em mosaico, geralmente representado por pequenas imagens simples de duas cores (geralmente preto e branco). O conteúdo principal destas pequenas imagens são várias hachuras.

A plataforma Java não possui uma classe separada para pintar formas e texto com hachuras. No entanto, a biblioteca Aspose.Page para Java oferece a classe com.aspose.eps.HatchPaintLibrary que permite criar java.awt.TexturePaint preenchido com hachuras definidas por um dos 55 estilos oferecidos por com.aspose.eps.HatchStyle.

Para pintar objetos gráficos com um padrão de hachura na biblioteca Aspose.Page para Java, é necessário criar uma hachura java.awt.TexturePaint com um estilo de hachura atribuído, passá-la para setPaint() ou um dos métodos fillText() ou fillAndStrokeText() que aceite java.awt.Paint como parâmetro.

Para contornar os objetos gráficos com um padrão de hachura na biblioteca Aspose.Page para Java, é necessário definir o padrão de hachura como a pintura atual em PsDocument, criar um novo java.awt.BasicStroke e passá-lo para setStroke() ou um dos métodos outlineText() ou fillAndStrokeText() que aceitam java.awt.Stroke como parâmetro.

No exemplo abaixo, demonstramos, em primeiro lugar, como preencher uma forma com um padrão de hachura, depois todos os estilos de hachura em Java e, por fim, como preencher e contornar um texto com um padrão de hachura.

Um algoritmo para pintar objetos gráficos com um padrão de hachura num novo documento PS inclui os seguintes passos:

  1. Criar um fluxo de saída para o ficheiro PS resultante.
  2. Criar PsSaveOptions.
  3. Criar PsDocument com o fluxo de saída já criado e as opções de guardar.
  4. Criar a forma ou fonte consoante o objeto que iremos preencher ou contornar.
  5. Criar com com.aspose.eps.HatchPaintLibrary um objeto de java.awt.TexturePaint 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 um texto. Se utilizarmos um dos métodos para preencher um texto que aceite java.awt.Paint como parâmetro, o ponto 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 pontos, o seguinte será:

  1. Defina a pintura de hachura como a pintura atual no PsDocument.

  2. Crie o objeto java.awt.BasicStroke.

  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 java.awt.Stroke como parâmetro, o ponto anterior pode ser ignorado.

  5. Feche a página.

  6. Guarde o documento.

 1  // Demonstrates all embedded hatch patterns that can be used to paint or outline shapes or text in PS document.
 2
 3  String outputFileName = "AddHatchPattern_outPS.ps";
 4
 5  //Create save options with A4 size
 6  PsSaveOptions options = new PsSaveOptions();
 7
 8  // Create new 1-paged PS Document
 9  PsDocument document = new PsDocument(getOutputDir() + outputFileName, options, false);
10
11  int x0 = 20;
12  int y0 = 100;
13  int squareSide = 32;
14  int width = 500;
15  int sumX = 0;
16
17//Restore graphics state
18  document.writeGraphicsSave();
19
20  //Translate to initial point
21  document.translate(x0, y0);
22  
23  //Create a square for every pattern
24  Rectangle2D.Float square = new Rectangle2D.Float(0, 0, squareSide, squareSide);
25  
26  //Create pen for outlining pattern square
27  BasicStroke stroke = new BasicStroke(2);
28  
29  HatchStyle [] hatchStyles = HatchStyle.values();
30  
31  //For every hatch pattern style 
32  for (int i = 0; i < hatchStyles.length; i++) {            
33  	//Create a hatch texture pattern by hatch style, foreground and background colors
34  	TexturePaint paint = HatchPaintLibrary.getHatchTexturePaint(hatchStyles[i], Color.BLACK, Color.WHITE);
35  	//Set paint with the current hatch pattern
36      document.setPaint(paint);
37
38      //Calculate a displacement in order to don't go beyond the page bounds
39      int x = squareSide;
40      int y = 0;
41      if (sumX >= width) {
42          x = -(sumX - squareSide);
43          y += squareSide;
44      }
45
46      //Translate current graphics state
47      document.translate(x, y);
48      //Fill pattern square
49      document.fill(square);
50
51      //Set current paint
52      document.setPaint(Color.BLACK);
53      //Set current stroke
54      document.setStroke(stroke);
55      //Draw square outline
56      document.draw(square);
57
58      //Calculate distance from X0
59      if (sumX >= width)
60          sumX = squareSide;
61      else
62          sumX += x;
63  }
64  
65  //Restore graphics state
66  document.writeGraphicsRestore();
67  
68  //Fill a text with the hatch pattern
69  TexturePaint paint = HatchPaintLibrary.getHatchTexturePaint(HatchStyle.DiagonalCross, Color.RED, Color.YELLOW);
70  Font font = new Font("Arial", Font.BOLD, 96);
71  document.fillAndStrokeText("ABC", font, 200, 320, paint, Color.BLACK, stroke);
72
73  //Outline the text with the hatch pattern
74  paint = HatchPaintLibrary.getHatchTexturePaint(HatchStyle.Percent70, Color.BLUE, Color.WHITE);
75  document.outlineText("ABC", font, 200, 420, paint, new BasicStroke(5));
76
77  //Close current page
78  document.closePage();
79
80  //Save the document
81  document.save();

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


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

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.