Trabalhar com Texturas em PostScript | .NET

Adicionar Padrão de Textura em Azulejos no Documento PS

Um padrão de textura em azulejos é uma imagem utilizada para preencher ou desenhar objetos: formas ou texto. Se o tamanho da imagem for inferior ao tamanho do objeto, esta será repetida nas direções X e Y para cobrir todas as áreas necessárias.

O processo de repetição da imagem dentro de objetos gráficos é designado por azulejo. Para definir pintura ou traço em PsDocument, devemos passar um objeto da classe System.Drawing.Brush para uma pintura e um objeto da classe System.Drawing.Pen para traçado nos respetivos métodos.

A biblioteca Aspose.Page para .NET processa todas as subclasses de System.Drawing.Brush oferecidas pela plataforma .NET. São eles: System.Drawing.SolidBrush, System.Drawing.TextureBrush, System.Drawing.LinearGradientBrush, System.Drawing.PathGradientBrush e System.Drawing.HatchBrush. A classe System.Drawing.Pen não pode ser estendida porque está selada, mas contém System.Drawing.Brush como propriedade e, portanto, a biblioteca Aspose.Page para .NET também pode utilizar um conjunto completo de pincéis para desenhar linhas e contornar formas e texto.

Para pintar objetos gráficos com um padrão texturizado na biblioteca Aspose.Page para .NET, basta passar System.Drawing.TextureBrush para SetPaint() ou um dos métodos FillText() ou FillAndStrokeText() que aceitam System.Drawing.Brush como parâmetro.

Para contornar os objetos gráficos com um padrão texturizado na biblioteca Aspose.Page para .NET, deve criar um novo System.Drawing.Pen com System.Drawing.TextureBrush e passá-lo para SetStroke() ou um dos métodos OutlineText() ou FillAndStrokeText() que aceitem System.Drawing.Pen 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.

Descrição dos passos de trabalho com o Padrão de Textura e PsDocument no exemplo:

  1. Crie um fluxo de saída para o ficheiro PS resultante.
  2. Crie o 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 guarde as opções.
  4. Crie um novo estado gráfico e translade-o para a posição necessária.
  5. Crie System.Drawing.Bitmap a partir do ficheiro de imagem.
  6. Crie System.Drawing.TextureBrush a partir da imagem.
  7. Defina a transformação necessária no pincel de textura.
  8. Defina o pincel de textura como a pintura atual no estado gráfico atual do PsDocument.
  9. Crie um percurso retangular.
  10. Preencha o retângulo com o pincel de textura.
  11. Guarde a pintura atual como uma variável local para utilização futura.
  12. Defina o traço atual com uma caneta vermelha.
  13. Contorne o retângulo com uma caneta atual.
  14. Saia do estado gráfico atual para o estado gráfico de nível superior.
  15. Crie a fonte system.
  16. Preencha e trace (contorne) o texto. Para preencher, utilize o pincel de textura e, para traçar, utilize caneta preta.
  17. Contorne o texto na outra posição com o novo System.Drawing.Pen criado com o pincel de textura como Brush.
  18. Feche a página.
  19. Guarde o documento.
 1 //Create an output stream for PostScript document
 2using (Stream outPsStream = new FileStream(dataDir + "AddTextureTilingPattern_outPS.ps", FileMode.Create))
 3{
 4    //Create save options with A4 size
 5    PsSaveOptions options = new PsSaveOptions();
 6
 7    // Create new 1-paged PS Document
 8    PsDocument document = new PsDocument(outPsStream, options, false);
 9
10    
11    document.WriteGraphicsSave();
12    document.Translate(200, 100);
13
14    //Create a Bitmap object from image file
15    using (Bitmap image = new Bitmap(dataDir + "TestTexture.bmp"))
16    {
17        //Create texture brush from the image
18        TextureBrush brush = new TextureBrush(image, WrapMode.Tile);
19
20        //Add scaling in X direction to the mattern
21        Matrix transform = new Matrix(2, 0, 0, 1, 0, 0);
22        brush.Transform = transform;
23
24        //Set this texture brush as current paint
25        document.SetPaint(brush);
26    }
27
28    //Create a rectangle path
29    GraphicsPath path = new GraphicsPath();
30    path.AddRectangle(new RectangleF(0, 0, 200, 100));
31
32    //Fill the rectangle
33    document.Fill(path);
34
35    //Get current paint
36    Brush paint = document.GetPaint();
37
38    //Set red stroke
39    document.SetStroke(new Pen(new SolidBrush(Color.Red), 2));
40    //Stroke the rectangle
41    document.Draw(path);
42
43    document.WriteGraphicsRestore();
44
45    //Fill the text with the texture pattern                
46    Font font = new Font("Arial", 96, FontStyle.Bold);
47    document.FillAndStrokeText("ABC", font, 200, 300, paint, new Pen(Color.Black, 2));
48
49    //Outline the text with the texture pattern
50    document.OutlineText("ABC", font, 200, 400, new Pen(paint, 5));
51
52    //Close current page
53    document.ClosePage();
54
55    //Save the document
56    document.Save();
57}

Para Linux, MacOS e outros sistemas operativos não Windows, oferecemos a utilização do nosso pacote NuGet Aspose.Page.Drawing. Utiliza o backend Aspose.Drawing em vez da biblioteca de sistema System.Drawing.

Assim, importe o namespace Aspose.Page.Drawing em vez do namespace System.Drawing. No trecho de código acima, será utilizado Aspose.Page.Drawing.RectangleF em vez de System.Drawing.RectangleF, Aspose.Page.Drawing.Drawing2D.GraphicsPath em vez de System.Drawing.Drawing2D.GraphicsPath e assim por diante. Os nossos exemplos de código no GitHub contêm todas as substituições necessárias.

Veja como trabalhar com texturas em documentos PS em Java.

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

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.