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:
Creare un flusso di output per il file PS risultante.
Creare PsSaveOptions.
Creare PsDocument con il flusso di output già creato e le opzioni di salvataggio.
Creare il percorso grafico o il font necessari in base all’oggetto che si desidera riempire o delineare.
Creare un oggetto di System.Drawing.HatchBrush con lo stile desiderato.
Impostare il pennello di tratteggio come pittura corrente in PsDocument.
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.
Chiudere la pagina.
Salvare il documento.
Se desideriamo contornare (contornare) oggetti grafici con un motivo di tratteggio invece degli ultimi 4 punti, il seguente sarà:
Creare un oggetto System.Drawing.Pen con il pennello di tratteggio.
Impostare questa penna come tratto corrente in PsDocument.
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.
Chiudere la pagina.
Salvare il documento.
1// Demonstrates all embedded hatch patterns that can be used to paint or outline shapes or text in PS document.
2
3string outputFileName = "AddHatchPattern_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
11int x0 = 20;
12int y0 = 100;
13int squareSide = 32;
14int width = 500;
15int sumX = 0;
16
17//Restore graphics state
18document.WriteGraphicsSave();
19
20//Translate to initial point
21document.Translate(x0, y0);
22
23//Create rectngle path for every pattern square
24GraphicsPath path = new GraphicsPath();
25path.AddRectangle(new RectangleF(0, 0, squareSide, squareSide));
26
27//Create pen for outlining pattern square
28Pen pen = new Pen(Color.Black, 2);
29
30//For every hatch pattern style
31for (HatchStyle hatchStyle = 0; hatchStyle <= (HatchStyle)52; hatchStyle++)
32{
33 //Set paint with current hatch brush style
34 document.SetPaint(new HatchBrush(hatchStyle, Color.Black, Color.White));
35
36 //Calculate displacement in order to don't go beyond the page bounds
37 int x = squareSide;
38 int y = 0;
39 if (sumX >= width)
40 {
41 x = -(sumX - squareSide);
42 y += squareSide;
43 }
44 //Translate current graphics state
45 document.Translate(x, y);
46 //Fill pattern square
47 document.Fill(path);
48 //Set stroke
49 document.SetStroke(pen);
50 //Draw square outline
51 document.Draw(path);
52
53 //Calculate distance from X0
54 if (sumX >= width)
55 {
56 sumX = squareSide;
57 }
58 else
59 sumX += x;
60}
61
62//Restore graphics state
63document.WriteGraphicsRestore();
64
65//Fill text with hatch pattern
66HatchBrush brush = new HatchBrush(HatchStyle.DiagonalCross, Color.Red, Color.Yellow);
67System.Drawing.Font font = new System.Drawing.Font("Arial", 96, FontStyle.Bold);
68document.FillAndStrokeText("ABC", font, 200, 300, brush, pen);
69
70//Outline text with hatch pattern
71brush = new HatchBrush(HatchStyle.Percent50, Color.Blue, Color.White);
72document.OutlineText("ABC", font, 200, 400, new Pen(brush, 5));
73
74//Close current page
75document.ClosePage();
76
77//Save the document
78document.Save();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:

È possibile scaricare esempi e file di dati da GitHub.