Робота з текстурами в PostScript | .NET

Додайте шаблон розбиття текстури в документ PS

Текстурний мозаїчний шаблон — це зображення, яке використовується для заливки або малювання об’єктів: фігур або тексту. Якщо розмір зображення менше розміру об’єкта, воно повторюється в напрямках X і Y для покриття всіх необхідних областей.

Процес повторення зображення всередині графічних об’єктів називається мозаїкою. Щоб установити фарбу або обведення в PsDocument, ми повинні передати об’єкт класу System.Drawing.Brush для малювання та об’єкт System.Drawing.Pen для обведення у відповідні методи.

Бібліотека Aspose.Page для .NET обробляє всі підкласи System.Drawing.Brush, які пропонуються платформою .NET. Це System.Drawing.SolidBrush, System.Drawing.TextureBrush, System.Drawing.LinearGradientBrush, System.Drawing.PathGradientBrush і *System.Drawing.HatchBrush *. Клас System.Drawing.Pen не можна розширити, оскільки він запечатаний, але він містить System.Drawing.Brush як властивість, тому Aspose.Page для бібліотеки .NET також може використовувати повний набір пензлів також для малювання ліній і окреслення форм і тексту.

Щоб намалювати графічні об’єкти текстурованим візерунком у бібліотеці Aspose.Page для .NET, достатньо просто передати System.Drawing.TextureBrush у SetPaint() або один із FillText () або FillAndStrokeText() методи, які приймають System.Drawing.Brush як параметр.

Щоб контурувати графічні об’єкти текстурованим візерунком у бібліотеці Aspose.Page для .NET, вам слід створити новий System.Drawing.Pen за допомогою System.Drawing.TextureBrush і передати його в SetStroke () або один із методів OutlineText() або FillAndStrokeText(), який приймає System.Drawing.Pen як параметр.

У наведеному нижче прикладі ми демонструємо, як заповнити фігуру та текст, а також окреслити текст шаблоном плитки текстури.

Опис кроків роботи з Texture Pattern і PsDocument у прикладі:

  1. Створіть вихідний потік для отриманого файлу PS.
  2. Створіть об’єкт PsSaveOptions із параметрами за замовчуванням.
  3. Створіть 1-сторінковий PsDocument із уже створеним вихідним потоком і параметрами збереження.
  4. Створіть новий графічний стан і переведіть його в потрібне положення.
  5. Створіть System.Drawing.Bitmap із файлу зображення.
  6. Створіть System.Drawing.TextureBrush із зображення.
  7. Встановіть необхідну трансформацію в пензлі текстури.
  8. Встановіть текстурну кисть як поточну фарбу в поточному графічному стані PsDocument.
  9. Створіть контур прямокутника.
  10. Заповніть прямокутник текстурним пензлем.
  11. Збережіть поточну фарбу як локальну змінну для майбутнього використання.
  12. Встановіть поточний штрих червоною ручкою.
  13. Окресліть прямокутник ручкою.
  14. Вихід із поточного стану графіки до стану графіки верхнього рівня.
  15. Створіть системний шрифт.
  16. Заливка та обведення (контур) тексту. Для заповнення текстури використовується кисть, а для обведення використовується чорна ручка.
  17. Наведіть контур тексту в іншій позиції за допомогою нового System.Drawing.Pen, створеного з текстурним пензлем як Brush.
  18. Закрийте сторінку.
  19. Збережіть документ.
 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}

Для Linux, MacOS та інших операційних систем, відмінних від Windows, ми пропонуємо використовувати наш пакет Nuget Aspose.Page.Drawing. Він використовує бекенд Aspose.Drawing замість системної бібліотеки System.Drawing. Тому імпортуйте простір імен Aspose.Page.Drawing замість System.Drawing. У наведеному вище фрагменті коду Aspose.Page.Drawing.RectangleF використовуватиметься замість System.Drawing.RectangleF, Aspose.Page.Drawing.Drawing2D.GraphicsPath використовуватиметься замість System.Drawing.Drawing2D.GraphicsPath тощо. Наші приклади коду на GitHub містять усі необхідні заміни.

Дивіться роботу з текстурами в документах PS у Java.

Результат виконання цього коду виглядає як

Додати шаблон плитки текстури

Ви можете завантажити приклади і файли даних з GitHub.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.