Работа с текстурами в 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 в качестве параметра.

В приведенном ниже примере мы демонстрируем, как заполнить фигуру и текст, а также обвести текст узором мозаики текстуры.

Описание шагов работы с Pattern Pattern и PsDocument в примере:

  1. Создайте выходной поток для полученного PS-файла.
  2. Создайте объект PsSaveOptions с параметрами по умолчанию.
  3. Создайте одностраничный 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. В приведенном выше фрагменте кода вместо System.Drawing.RectangleF будет использоваться Aspose.Page.Drawing.RectangleF, вместо System.Drawing.Drawing2D.GraphicsPath будет использоваться Aspose.Page.Drawing.Drawing2D.GraphicsPath и так далее. Наши примеры кода на GitHub содержат все необходимые замены.

См. работу с текстурами в документах PS в Java.

Результат запуска этого кода выглядит так:

Добавить узор текстуры

Вы можете загрузить примеры и файлы данных с сайта GitHub.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.