Работа с образцами штриховки в PostScript | .NET

Добавить образец штриховки в документ PS

Образец штриховки представляет собой образец мозаики текстуры, обычно представленный небольшим двухцветным (обычно черно-белым) простым изображением. Основное содержание этих небольших изображений — различные штриховки.

Для рисования штриховками на платформе .NET предусмотрен отдельный класс, производный от System.Drawing.Brush, System.Drawing.HatchBrush. Его отличие от System.Drawing.TextureBrush заключается в том, что он имеет имена предопределенных стилей, определяющих, какое изображение использовать для мозаики. Платформа .NET предлагает 53 стиля штриховки, и все 52 стиля можно использовать для заполнения или обводки (обводки) в PsDocument.

Чтобы рисовать графические объекты с помощью штриховки в библиотеке Aspose.Page для .NET, достаточно просто передать System.Drawing.HatchBrush в SetPaint() или один из FillText. () или FillAndStrokeText(), принимающие System.Drawing.Brush в качестве параметра.

Чтобы обвести графические объекты штриховкой в ​​библиотеке Aspose.Page для .NET, кто-то должен создать новый System.Drawing.Pen с помощью System.Drawing.HacthBrush и передать его в SetStroke. () или один из методов OutlineText() или FillAndStrokeText(), которые принимают System.Drawing.Pen в качестве параметра.

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

Алгоритм рисования графических объектов штриховкой в ​​новом PS-документе включает следующие этапы:

  1. Создайте выходной поток для полученного PS-файла.
  2. Создайте PsSaveOptions.
  3. Создайте PsDocument с уже созданным выходным потоком и сохраните параметры.
  4. Создайте необходимый графический контур или шрифт в зависимости от того, какой объект мы собираемся заливать или обводить.
  5. Создайте объект System.Drawing.HatchBrush с желаемым стилем.
  6. Установите кисть штриховки в качестве текущей краски в PsDocument.
  7. Заполните графический контур текущей краской или заполните текст. Если мы воспользуемся одним из методов заливки текста, принимающим в качестве параметра System.Drawing.Brush, предыдущий пункт можно проигнорировать.
  8. Закройте страницу.
  9. Сохраните документ.

Если нам нужно обводка (обведение) графических объектов штриховкой вместо последних 4 точек, то будет следующее:

  1. Создайте объект System.Drawing.Pen с помощью кисти штриховки.

  2. Установите это перо в качестве текущего штриха в PsDocument.

  3. Обведите графический контур текущей обводкой или обведите текст. Если мы используем один из методов выделения текста, который принимает System.Drawing.Pen в качестве параметра, предыдущую точку можно игнорировать.

  4. Закройте страницу.

  5. Сохраните документ.

 1// Demonstrates all embedded hatch patterns that can be used to paint or outline shapes or text in PS document.
 2
 3string outputFileName = "AddHatchPattern_outPS.ps";
 4
 5//Create save options with A4 size
 6PsSaveOptions options = new PsSaveOptions();
 7
 8// Create new 1-paged PS Document
 9PsDocument document = new PsDocument(OutputDir + outputFileName, options, false);
10
11int x0 = 20;
12int y0 = 100;
13int squareSide = 32;
14int width = 500;
15int sumX = 0;
16
17//Restore graphics state
18document.WriteGraphicsSave();
19
20//Translate to initial point
21document.Translate(x0, y0);
22
23//Create rectngle path for every pattern square
24GraphicsPath path = new GraphicsPath();
25path.AddRectangle(new RectangleF(0, 0, squareSide, squareSide));
26
27//Create pen for outlining pattern square
28Pen pen = new Pen(Color.Black, 2);
29
30//For every hatch pattern style 
31for (HatchStyle hatchStyle = 0; hatchStyle <= (HatchStyle)52; hatchStyle++)
32{
33    //Set paint with current hatch brush style
34    document.SetPaint(new HatchBrush(hatchStyle, Color.Black, Color.White));
35
36    //Calculate displacement in order to don't go beyond the page bounds
37    int x = squareSide;
38    int y = 0;
39    if (sumX >= width)
40    {
41        x = -(sumX - squareSide);
42        y += squareSide;
43    }
44    //Translate current graphics state
45    document.Translate(x, y);
46    //Fill pattern square
47    document.Fill(path);
48    //Set stroke
49    document.SetStroke(pen);
50    //Draw square outline
51    document.Draw(path);
52
53    //Calculate distance from X0
54    if (sumX >= width)
55    {
56        sumX = squareSide;
57    }
58    else
59        sumX += x;
60}
61
62//Restore graphics state
63document.WriteGraphicsRestore();
64
65//Fill text with hatch pattern
66HatchBrush brush = new HatchBrush(HatchStyle.DiagonalCross, Color.Red, Color.Yellow);
67System.Drawing.Font font = new System.Drawing.Font("Arial", 96, FontStyle.Bold);
68document.FillAndStrokeText("ABC", font, 200, 300, brush, pen);
69
70//Outline text with hatch pattern
71brush = new HatchBrush(HatchStyle.Percent50, Color.Blue, Color.White);
72document.OutlineText("ABC", font, 200, 400, new Pen(brush, 5));
73
74//Close current page
75document.ClosePage();
76
77//Save the document
78document.Save();

Для Linux, MacOS и других операционных систем, отличных от Windows, мы предлагаем использовать наш пакет Nuget Aspose.Page.Drawing. Он использует серверную часть Aspose.Drawing вместо системной библиотеки System.Drawing.

Поэтому импортируйте пространство имен Aspose.Page.Drawing вместо System.Drawing. В приведенном выше фрагменте кода вместо System.Drawing.Rectangle будет использоваться Aspose.Page.Drawing.Rectangle, Aspose.Page.Drawing.Drawing2D.GraphicsPath будет использоваться вместо System.Drawing.Drawing2D.GraphicsPath и так далее. Наши примеры кода на GitHub содержат все необходимые замены.

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


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

Добавить образец штриховки

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

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.