Lavorare con i modelli di tratteggio in PostScript | .NET

Aggiungi un pattern di tratteggio in un documento PS

Il pattern di tratteggio è un pattern di texture a mosaico, solitamente rappresentato da una piccola immagine semplice a 2 colori (solitamente bianco e nero). Il contenuto principale di queste piccole immagini è costituito da vari tratteggi.

Per la pittura tramite tratteggi, la piattaforma .NET dispone di una classe separata, derivata da System.Drawing.Brush, ovvero System.Drawing.HatchBrush. La sua differenza rispetto a System.Drawing.TextureBrush è che dispone di stili predefiniti che definiscono l’immagine da utilizzare per il tiling. La piattaforma .NET offre 53 stili di tratteggio e tutti i 52 stili possono essere utilizzati per il riempimento o il contorno (contorno) in PSDocument.

Per dipingere oggetti grafici con un motivo di tratteggio nella libreria Aspose.Page per .NET, è sufficiente passare System.Drawing.HatchBrush a SetPaint() o a uno dei metodi FillText() o FillAndStrokeText() che accettano System.Drawing.Brush come parametro.

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

Nell’esempio seguente mostriamo, innanzitutto, come riempire una forma con un motivo di tratteggio, poi tutti i tipi di stili di tratteggio in .NET e, infine, come riempire e delineare un testo con un motivo di tratteggio. Un algoritmo per dipingere oggetti grafici con un motivo di tratteggio in un nuovo documento PS include i seguenti passaggi:

  1. Creare un flusso di output per il file PS risultante.

  2. Creare PsSaveOptions.

  3. Creare PsDocument con il flusso di output già creato e le opzioni di salvataggio.

  4. Creare il percorso grafico o il font necessari in base all’oggetto che si desidera riempire o delineare.

  5. Creare un oggetto di System.Drawing.HatchBrush con lo stile desiderato.

  6. Impostare il pennello di tratteggio come pittura corrente in PsDocument.

  7. Riempire il percorso grafico con la pittura corrente o aggiungere un testo. Se utilizziamo uno dei metodi per riempire un testo che accetta System.Drawing.Brush come parametro, il punto precedente può essere ignorato.

  8. Chiudere la pagina.

  9. Salvare il documento.

Se desideriamo contornare (contornare) oggetti grafici con un motivo di tratteggio invece degli ultimi 4 punti, il seguente sarà:

  1. Creare un oggetto System.Drawing.Pen con il pennello di tratteggio.

  2. Impostare questa penna come tratto corrente in PsDocument.

  3. Delineare il tracciato grafico con il tratto corrente o il testo. Se utilizziamo uno dei metodi per delineare il testo che accetta System.Drawing.Pen come parametro, il punto precedente può essere ignorato.

  4. Chiudere la pagina.

  5. Salvare il documento.

 1//Create an output stream for PostScript document
 2using (Stream outPsStream = new FileStream(dataDir + "AddHatchPattern_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    int x0 = 20;
11    int y0 = 100;
12    int squareSide = 32;
13    int width = 500;
14    int sumX = 0;
15
16    //Create a graphics state
17    document.WriteGraphicsSave();
18
19    //Translate the graphics state to initial point
20    document.Translate(x0, y0);
21
22    //Create a rectangle path for every pattern square
23    GraphicsPath path = new GraphicsPath();
24    path.AddRectangle(new RectangleF(0, 0, squareSide, squareSide));
25
26    //Create a pen for outlining pattern square
27    Pen pen = new Pen(Color.Black, 2);
28
29    //For every hatch pattern style 
30    for (HatchStyle hatchStyle = 0; hatchStyle <= (HatchStyle)52; hatchStyle++)
31    {
32        //Set the paint with current hatch brush style
33        document.SetPaint(new HatchBrush(hatchStyle, Color.Black, Color.White));
34
35        //Calculate a displacement in order to don't go beyond the page bounds
36        int x = squareSide;
37        int y = 0;
38        if (sumX >= width)
39        {
40            x = -(sumX - squareSide);
41            y += squareSide;
42        }
43        //Translate current graphics state
44        document.Translate(x, y);
45        //Fill the pattern square
46        document.Fill(path);
47        //Set the stroke
48        document.SetStroke(pen);
49        //Draw the square outline
50        document.Draw(path);
51
52        //Calculate a distance from X0
53        if (sumX >= width)
54        {
55            sumX = squareSide;
56        }
57        else
58            sumX += x;
59    }
60
61    //Exit from current graphics state to upper level graphics state
62    document.WriteGraphicsRestore();
63
64    //Fill the text with the hatch pattern
65    HatchBrush brush = new HatchBrush(HatchStyle.DiagonalCross, Color.Red, Color.Yellow);
66    Font font = new Font("Arial", 96, FontStyle.Bold);
67    document.FillAndStrokeText("ABC", font, 200, 300, brush, pen);
68
69    //Outline the text with hatch pattern
70    brush = new HatchBrush(HatchStyle.Percent50, Color.Blue, Color.White);                
71    document.OutlineText("ABC", font, 200, 400, new Pen(brush, 5));
72
73
74    //Close current page
75    document.ClosePage();
76
77    //Save the document
78    document.Save();
79}

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.Rectangle invece di System.Drawing.Rectangle, verrà utilizzato Aspose.Page.Drawing.Drawing2D.GraphicsPath invece di System.Drawing.Drawing2D.GraphicsPath e così via. I nostri esempi di codice su GitHub contengono tutte le sostituzioni necessarie.

Vedere Lavorare con un modello di tratteggio in un documento PS in Java.


Il risultato dell’esecuzione di questo codice appare come:

Aggiungi modello di tratteggio

È 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.