Travailler avec des clips dans PS | .NET

Ajouter un clip dans un document PS

Un clip dans un document PS est un chemin qui délimite le contenu de l’état graphique actuel qui sera affiché dans la visionneuse ou l’éditeur PS. Le contenu laissé au-delà des limites sera coupé.

Un chemin de détourage dans .NET peut être attribué de trois manières :

À l’heure actuelle, la bibliothèque Aspose.Page pour .NET propose la première et la deuxième manière de découper. Dans l’exemple ci-dessous, nous obtenons un cercle System.Drawing.Drawing2D.GraphicsPath à partir d’un rectangle comme chemin de détourage et découpons un rectangle rempli de bleu dans le même état graphique.

Afin d’ajouter un clip au nouveau PsDocument avec la bibliothèque Aspose.Page pour .NET dans cet exemple, nous procédons comme suit :

  1. Créez un flux de sortie pour le fichier PS résultant.
  2. Créez l’objet PsSaveOptions avec les options par défaut.
  3. Créez un PsDocument d’une page avec un flux de sortie déjà créé et enregistrez les options.
  4. Créez un nouvel état graphique.
  5. Créez un cercle System.Drawing.Drawing2D.GraphicsPath à partir du rectangle.
  6. Définissez un clip avec ce chemin.
  7. Définissez une peinture sur l’état graphique actuel de PsDocument.
  8. Remplissez le chemin du rectangle avec la peinture actuelle.
  9. Quittez l’état graphique actuel pour passer au niveau supérieur.
  10. Traduisez à la place du rectangle rempli.
  11. Tracez avec une ligne pointillée les limites du même rectangle au-dessus de celui rempli pour afficher les limites du rectangle rempli coupé.
  12. Fermez la page.
  13. Enregistrez le document.
 1//Create an output stream for the PostScript document
 2using (Stream outPsStream = new FileStream(dataDir + "Clipping_outPS.ps", FileMode.Create))
 3{
 4    //Create save options with default values
 5    PsSaveOptions options = new PsSaveOptions();
 6
 7    // Create a new 1-paged PS Document
 8    PsDocument document = new PsDocument(outPsStream, options, false);
 9
10    //Create a graphics path from the rectangle
11    GraphicsPath rectangePath = new GraphicsPath();
12    rectangePath.AddRectangle(new RectangleF(0, 0, 300, 200));
13
14    //Save the graphics state in order to return back to this state after transformation
15    document.WriteGraphicsSave();
16
17    //Displace the current graphics state on 100 points to the right and 100 points to the bottom.
18    document.Translate(100, 100);
19
20    //Create a graphics path from the circle
21    GraphicsPath circlePath = new GraphicsPath();
22    circlePath.AddEllipse(new RectangleF(50, 0, 200, 200));
23
24    //Add a clipping by the circle to the current graphics state
25    document.Clip(circlePath);
26
27    //Set the paint in the current graphics state
28    document.SetPaint(new SolidBrush(Color.Blue));
29
30    //Fill the rectangle in the current graphics state (with the clipping)
31    document.Fill(rectangePath);
32
33    //Restore the graphics state to the previus (upper) level
34    document.WriteGraphicsRestore();
35
36    //Displace the upper level graphics state on 100 points to the right and 100 points to the bottom.
37    document.Translate(100, 100);
38
39    Pen pen = new Pen(new SolidBrush(Color.Blue), 2);
40    pen.DashStyle = DashStyle.Dash;
41
42    document.SetStroke(pen);
43
44    //Draw the rectangle in the current graphics state (has no clipping) above the clipped rectngle
45    document.Draw(rectangePath);
46
47    //Close the current page
48    document.ClosePage();
49
50    //Save the document
51    document.Save();
52}

Pour Linux, MacOS et autres systèmes d’exploitation non Windows, nous proposons d’utiliser notre package Nuget Aspose.Page.Drawing. Il utilise le backend Aspose.Drawing au lieu de la bibliothèque système System.Drawing.

Importez donc l’espace de noms Aspose.Page.Drawing au lieu de celui de System.Drawing. Dans l’extrait de code ci-dessus, Aspose.Page.Drawing.Rectangle sera utilisé à la place de System.Drawing.Rectangle, Aspose.Page.Drawing.Drawing2D.GraphicsPath sera utilisé à la place de System.Drawing.Drawing2D.GraphicsPath et ainsi de suite. Nos exemples de code sur GitHub contiennent toutes les substitutions nécessaires.

Voir Travailler avec des clips dans des documents PS dans Java.

Le résultat de l’exécution de ce code apparaît comme

Coupe de coupure

Dans l’exemple suivant, nous obtenons une police qui découpe un rectangle rempli de bleu avec le contour du texte.

Afin d’ajouter un extrait par texte au nouveau PsDocument avec la bibliothèque Aspose.Page pour .NET dans cet exemple, nous procédons comme suit :

  1. Créez un flux de sortie pour le fichier PS résultant.
  2. Créez un objet PsSaveOptions avec les options par défaut.
  3. Créez un PsDocument d’une page avec un flux de sortie déjà créé et enregistrez les options.
  4. Créez un nouvel état graphique.
  5. Créez une police.
  6. Définissez un clip avec le texte et la police.
  7. Définissez une peinture sur l’état graphique actuel de PsDocument.
  8. Remplissez le chemin du rectangle avec la peinture actuelle.
  9. Quittez l’état graphique actuel pour passer au niveau supérieur.
  10. Traduisez à la place du rectangle rempli.
  11. Tracez avec une ligne pointillée les limites du même rectangle au-dessus de celui rempli pour afficher les limites du rectangle rempli coupé.
  12. Fermez la page.
  13. Enregistrez le document.
 1//Create an output stream for the PostScript document
 2using (Stream outPsStream = new FileStream(dataDir + "Clipping_outPS.ps", FileMode.Create))
 3{
 4    //Create save options with default values
 5    PsSaveOptions options = new PsSaveOptions();
 6
 7    // Create a new 1-paged PS Document
 8    PsDocument document = new PsDocument(outPsStream, options, false);
 9
10    //Create a graphics path from the rectangle
11    GraphicsPath rectangePath = new GraphicsPath();
12    rectangePath.AddRectangle(new RectangleF(0, 0, 300, 200));
13
14    //Save the graphics state in order to return back to this state after transformation
15    document.WriteGraphicsSave();
16
17    //Displace the current graphics state on 100 points to the right and 100 points to the bottom.
18    document.Translate(100, 100);
19    
20    //Set the paint in the current graphics state
21    document.SetPaint(new SolidBrush(Color.Blue));
22
23    //Create a font
24    int fontSize = 120;
25    Font font = new Font("Arial", fontSize, FontStyle.Bold);
26
27    //Clip the rectangle by text's outline
28    document.ClipText("ABC", font, 20, fontSize + 10);
29    document.Fill(rectanglePath);
30
31    //Restore the graphics state to the previus (upper) level
32    document.WriteGraphicsRestore();
33
34		//Displace the upper level graphics state on 100 points to the right and 100 points to the bottom.
35    document.Translate(100, 100);
36
37		Pen pen = new Pen(new SolidBrush(Color.Blue), 2);
38    pen.DashStyle = DashStyle.Dash;
39
40    document.SetStroke(pen);
41    
42    //Draw the rectangle in the current graphics state (has no clipping) above the clipped rectangle
43    document.Draw(rectanglePath);
44
45    //Close the current page
46    document.ClosePage();
47
48    //Save the document
49    document.Save();
50}

Pour Linux, MacOS et autres systèmes d’exploitation non Windows, nous proposons d’utiliser notre package Nuget Aspose.Page.Drawing. Il utilise le backend Aspose.Drawing au lieu de la bibliothèque système System.Drawing. Importez donc l’espace de noms Aspose.Page.Drawing au lieu de celui de System.Drawing. Dans l’extrait de code ci-dessus, Aspose.Page.Drawing.Rectangle sera utilisé à la place de System.Drawing.Rectangle, Aspose.Page.Drawing.Drawing2D.GraphicsPath sera utilisé à la place de System.Drawing.Drawing2D.GraphicsPath et ainsi de suite. Nos exemples de code sur GitHub contiennent toutes les substitutions nécessaires.

Voir Travailler avec des clips dans des documents PS dans Java.


Le résultat de l’exécution de ce code apparaît comme

ClippingByText

Vous pouvez télécharger des exemples et des fichiers de données à partir de GitHub.

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.