Travailler avec des textures dans PS | .NET

Ajouter un motif de mosaïque de texture dans un document PS

Un motif de mosaïque de texture est une image utilisée pour remplir ou dessiner des objets : des formes ou du texte. Si la taille de l’image est inférieure à la taille de l’objet, elle est répétée dans les directions X et Y pour couvrir toutes les zones nécessaires.

Le processus de répétition de l’image à l’intérieur d’objets graphiques est appelé carrelage. Afin de définir la peinture ou le trait dans PsDocument, nous devons transmettre un objet de la classe System.Drawing.Brush pour une peinture et un objet de System.Drawing.Pen pour le trait dans les méthodes.

La bibliothèque Aspose.Page pour .NET traite toutes les sous-classes de System.Drawing.Brush proposées par la plateforme .NET. Il s’agit de System.Drawing.SolidBrush, System.Drawing.TextureBrush, System.Drawing.LinearGradientBrush, System.Drawing.PathGradientBrush et *System.Drawing.HatchBrush. *. La classe System.Drawing.Pen ne peut pas être étendue car elle est scellée, mais elle contient System.Drawing.Brush comme propriété et, par conséquent, la bibliothèque Aspose.Page pour .NET peut également utiliser un ensemble complet de pinceaux également pour dessiner des lignes et décrire des formes et du texte.

Afin de peindre des objets graphiques avec un motif texturé dans la bibliothèque Aspose.Page pour .NET, il suffit simplement de passer System.Drawing.TextureBrush à SetPaint() ou à l’un des FillText () ou FillAndStrokeText() qui accepte System.Drawing.Brush comme paramètre.

Afin de décrire les objets graphiques avec un motif texturé dans la bibliothèque Aspose.Page pour .NET, vous devez créer un nouveau System.Drawing.Pen avec System.Drawing.TextureBrush et le transmettre à SetStroke () ou l’une des méthodes OutlineText() ou FillAndStrokeText() qui accepte System.Drawing.Pen comme paramètre.

Dans l’exemple ci-dessous, nous montrons comment remplir une forme et un texte et décrire un texte avec un motif de mosaïque de texture.

Description des étapes de travail avec Texture Pattern et PsDocument dans l’exemple :

  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 et traduisez-le dans la position nécessaire.
  5. Créez System.Drawing.Bitmap à partir du fichier image.
  6. Créez System.Drawing.TextureBrush à partir de l’image.
  7. Définissez la transformation nécessaire dans le pinceau de texture.
  8. Définissez le pinceau de texture comme peinture actuelle dans l’état graphique actuel de PsDocument.
  9. Créez un chemin rectangulaire.
  10. Remplissez le rectangle avec le pinceau à texture.
  11. Enregistrez la peinture actuelle en tant que variable locale pour une utilisation future.
  12. Définissez le trait actuel avec un stylo rouge.
  13. Décrivez le rectangle avec un stylo courant.
  14. Quittez l’état graphique actuel et passez à l’état graphique de niveau supérieur.
  15. Créez une police système.
  16. Remplissez et contournez le texte (contour). Pour remplir, le pinceau à texture est utilisé et pour caresser, un stylo noir est utilisé.
  17. Décrivez le texte dans l’autre position avec le nouveau System.Drawing.Pen créé avec le pinceau de texture comme pinceau.
  18. Fermez la page.
  19. Enregistrez le document.
 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}

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.RectangleF sera utilisé à la place de System.Drawing.RectangleF, 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 textures dans les documents PS dans Java.

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

Ajouter un motif de carrelage de texture

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.