Lavorare con le texture in PostScript | .NET

Aggiungi un pattern di texture a mosaico in un documento PS

Un pattern di texture a mosaico è un’immagine utilizzata per riempire o disegnare oggetti: forme o testo. Se le dimensioni dell’immagine sono inferiori a quelle dell’oggetto, viene ripetuta nelle direzioni X e Y per coprire tutte le aree necessarie.

Il processo di ripetizione dell’immagine all’interno di oggetti grafici è chiamato mosaico. Per impostare il colore o il tratto in PsDocument, dobbiamo passare un oggetto della classe System.Drawing.Brush per un disegno e un oggetto della classe System.Drawing.Pen per il tratto ai rispettivi metodi.

La libreria Aspose.Page per .NET elabora tutte le sottoclassi di System.Drawing.Brush offerte dalla piattaforma .NET. Questi sono System.Drawing.SolidBrush, System.Drawing.TextureBrush, System.Drawing.LinearGradientBrush, System.Drawing.PathGradientBrush e System.Drawing.HatchBrush. La classe System.Drawing.Pen non può essere estesa perché è sealed, ma contiene System.Drawing.Brush come proprietà e, pertanto, la libreria Aspose.Page per .NET può utilizzare un set completo di pennelli anche per disegnare linee e delineare forme e testo.

Per dipingere oggetti grafici con un pattern texturizzato nella libreria Aspose.Page per .NET, è sufficiente passare System.Drawing.TextureBrush a SetPaint() o a uno dei metodi FillText() o FillAndStrokeText() che accetta System.Drawing.Brush come parametro.

Per delineare oggetti grafici con un pattern texture nella libreria Aspose.Page per .NET, è necessario creare un nuovo System.Drawing.Pen con System.Drawing.TextureBrush e passarlo a SetStroke() o a uno dei metodi OutlineText() o FillAndStrokeText() che accetta System.Drawing.Pen come parametro.

Nell’esempio seguente mostriamo come riempire una forma e un testo e come delineare un testo con un pattern texture a mosaico.

Descrizione dei passaggi per lavorare con Texture Pattern e PsDocument nell’esempio:

  1. Creare un flusso di output per il file PS risultante.
  2. Creare un oggetto PsSaveOptions con opzioni predefinite. 3. Creare un PsDocument di una pagina con un flusso di output già creato e opzioni di salvataggio.
  3. Creare un nuovo stato grafico e traslarlo nella posizione desiderata.
  4. Creare System.Drawing.Bitmap dal file immagine.
  5. Creare System.Drawing.TextureBrush dall’immagine.
  6. Impostare la trasformazione necessaria nel pennello texture.
  7. Impostare il pennello texture come pennello corrente nello stato grafico corrente di PsDocument.
  8. Creare un tracciato rettangolare.
  9. Riempire il rettangolo con il pennello texture.
  10. Salvare il pennello corrente come variabile locale per un utilizzo futuro.
  11. Impostare il tratto corrente con una penna rossa.
  12. Contornare il rettangolo con una penna corrente.
  13. Uscire dallo stato grafico corrente e tornare allo stato grafico di livello superiore.
  14. Creare il font system.
  15. Riempire e tracciare (contornare) il testo. Per il riempimento si utilizza il pennello texture e per il contorno si utilizza la penna nera.
  16. Contornare il testo nell’altra posizione con il nuovo System.Drawing.Pen creato con il pennello texture come Brush.
  17. Chiudere la pagina.
  18. Salvare il 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}

Per Linux, macOS e altri sistemi operativi non Windows, offriamo l’utilizzo del nostro pacchetto Nuget Aspose.Page.Drawing. Utilizza il backend Aspose.Drawing invece della libreria di sistema System.Drawing.

Quindi, importiamo lo spazio dei nomi Aspose.Page.Drawing invece di quello System.Drawing. Nel frammento di codice sopra riportato verrà utilizzato Aspose.Page.Drawing.RectangleF al posto di System.Drawing.RectangleF, Aspose.Page.Drawing.Drawing2D.GraphicsPath al posto di System.Drawing.Drawing2D.GraphicsPath e così via. I nostri esempi di codice su GitHub contengono tutte le sostituzioni necessarie.

Vedi come lavorare con le texture nei documenti PS in Java.

Il risultato dell’esecuzione di questo codice viene visualizzato come

Aggiungi pattern di tiling texture

È possibile scaricare esempi e file di dati da GitHub.

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.