Arbeiten mit Schraffurmustern in PostScript | .NET

Schraffurmuster im PS-Dokument hinzufügen

Das Schraffurmuster ist ein Texturkachelmuster, das normalerweise durch ein kleines, zweifarbiges (normalerweise schwarz-weißes) einfaches Bild dargestellt wird. Der Hauptinhalt dieser kleinen Bilder sind verschiedene Schraffuren.

Für das Malen durch Schraffuren verfügt die .NET-Plattform über eine separate Klasse, abgeleitet von System.Drawing.Brush, System.Drawing.HatchBrush. Der Unterschied zu System.Drawing.TextureBrush besteht darin, dass es vordefinierte Stile benannt hat, die definieren, welches Bild für die Kachelung verwendet werden soll. Die .NET-Plattform bietet 53 Schraffurstile und alle 52 Stile können zum Füllen oder Strichen (Konturieren) in PsDocument verwendet werden.

Um Grafikobjekte mit einem Schraffurmuster in der Aspose.Page für .NET-Bibliothek zu malen, reicht es aus, einfach System.Drawing.HatchBrush an SetPaint() oder einen der FillText zu übergeben () oder FillAndStrokeText()-Methoden, die System.Drawing.Brush als Parameter akzeptieren.

Um Grafikobjekte mit einem Schraffurmuster in der Aspose.Page für .NET-Bibliothek zu umreißen, sollte jemand einen neuen System.Drawing.Pen mit System.Drawing.HacthBrush erstellen und ihn an SetStroke übergeben () oder eine der Methoden OutlineText() oder FillAndStrokeText(), die System.Drawing.Pen als Parameter akzeptieren.

Im folgenden Beispiel zeigen wir zunächst, wie Sie eine Form mit einem Schraffurmuster füllen, dann alle verschiedenen Schraffurstile in .NET und schließlich, wie Sie einen Text mit einem Schraffurmuster füllen und umreißen.

Ein Algorithmus zum Malen von Grafikobjekten mit einem Schraffurmuster in einem neuen PS-Dokument umfasst die folgenden Schritte:

  1. Erstellen Sie einen Ausgabestream für die resultierende PS-Datei.
  2. Erstellen Sie PsSaveOptions.
  3. Erstellen Sie PsDocument mit dem bereits erstellten Ausgabestream und den Speicheroptionen.
  4. Erstellen Sie den erforderlichen Grafikpfad oder die erforderliche Schriftart, abhängig davon, welches Objekt wir füllen oder umreißen möchten.
  5. Erstellen Sie ein Objekt von System.Drawing.HatchBrush mit Wunschstil.
  6. Legen Sie den Schraffurpinsel als aktuelle Farbe in PsDocument fest
  7. Füllen Sie den Grafikpfad mit der aktuellen Farbe oder füllen Sie einen Text. Wenn wir eine der Methoden zum Füllen eines Textes verwenden, die System.Drawing.Brush als Parameter akzeptiert, kann der vorherige Punkt ignoriert werden.
  8. Schließen Sie die Seite.
  9. Speichern Sie das Dokument.

Wenn wir Grafikobjekte mit einem Schraffurmuster anstelle der letzten 4 Punkte streichen (umreißen) benötigen, ist Folgendes:

  1. Erstellen Sie das Objekt System.Drawing.Pen mit dem Schraffurpinsel.

  2. Legen Sie diesen Stift als aktuellen Strich in PsDocument fest.

  3. Umreißen Sie den Grafikpfad mit dem aktuellen Strich oder umreißen Sie den Text. Wenn wir eine der Methoden zum Umreißen des Textes verwenden, die System.Drawing.Pen als Parameter akzeptiert, kann der vorherige Punkt ignoriert werden.

  4. Schließen Sie die Seite.

  5. Speichern Sie das Dokument.

 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}

Für Linux, MacOS und andere Nicht-Windows-Betriebssysteme bieten wir die Verwendung unseres Nuget-Pakets Aspose.Page.Drawing an. Es verwendet das Aspose.Drawing-Backend anstelle der System.Drawing-Systembibliothek.

Importieren Sie also den Namensraum Aspose.Page.Drawing anstelle des Namensraums System.Drawing. Im obigen Codeausschnitt wird Aspose.Page.Drawing.Rectangle anstelle von System.Drawing.Rectangle verwendet. Aspose.Page.Drawing.Drawing2D.GraphicsPath wird anstelle von System.Drawing.Drawing2D.GraphicsPath usw. verwendet. Unsere Codebeispiele auf GitHub enthalten alle notwendigen Ersetzungen.

Weitere Informationen finden Sie unter „Arbeiten mit einem Schraffurmuster im PS-Dokument“ in Java.


Das Ergebnis der Ausführung dieses Codes wird wie folgt angezeigt:

Schraffurmuster hinzufügen

Sie können Beispiele und Datendateien herunterladen von GitHub.

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.