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// Paint rectangle and text and outline text with tiled image (texture pattern) in PS document.
 2
 3string outputFileName = "AddTextureTilingPattern_outPS.ps";
 4
 5//Create save options with A4 size
 6PsSaveOptions options = new PsSaveOptions();
 7
 8// Create new 1-paged PS Document
 9PsDocument document = new PsDocument(OutputDir + outputFileName, options, false);
10
11document.WriteGraphicsSave();
12document.Translate(200, 100);
13
14//Create a Bitmap object from image file
15using (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 rectangle path
29GraphicsPath path = new GraphicsPath();
30path.AddRectangle(new RectangleF(0, 0, 200, 100));
31
32//Fill rectangle
33document.Fill(path);
34
35//Get current paint
36Brush paint = document.GetPaint();
37
38//Set red stroke
39document.SetStroke(new Pen(new SolidBrush(Color.Red), 2));
40//Stroke the rectangle
41document.Draw(path);
42
43document.WriteGraphicsRestore();
44
45//Fill text with texture pattern                
46System.Drawing.Font font = new System.Drawing.Font("Arial", 96, FontStyle.Bold);
47document.FillAndStrokeText("ABC", font, 200, 300, paint, new Pen(Color.Black, 2));
48
49//Outline text with texture pattern
50document.OutlineText("ABC", font, 200, 400, new Pen(paint, 5));
51
52//Close current page
53document.ClosePage();
54
55//Save the document
56document.Save();

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.