Работа с образцами штриховки в 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//Create an output stream for PostScript document
 2using (Stream outPsStream = new FileStream(dataDir + "AddHatchPattern_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    int x0 = 20;
11    int y0 = 100;
12    int squareSide = 32;
13    int width = 500;
14    int sumX = 0;
15
16    //Create a graphics state
17    document.WriteGraphicsSave();
18
19    //Translate the graphics state to initial point
20    document.Translate(x0, y0);
21
22    //Create a rectangle path for every pattern square
23    GraphicsPath path = new GraphicsPath();
24    path.AddRectangle(new RectangleF(0, 0, squareSide, squareSide));
25
26    //Create a pen for outlining pattern square
27    Pen pen = new Pen(Color.Black, 2);
28
29    //For every hatch pattern style 
30    for (HatchStyle hatchStyle = 0; hatchStyle <= (HatchStyle)52; hatchStyle++)
31    {
32        //Set the paint with current hatch brush style
33        document.SetPaint(new HatchBrush(hatchStyle, Color.Black, Color.White));
34
35        //Calculate a displacement in order to don't go beyond the page bounds
36        int x = squareSide;
37        int y = 0;
38        if (sumX >= width)
39        {
40            x = -(sumX - squareSide);
41            y += squareSide;
42        }
43        //Translate current graphics state
44        document.Translate(x, y);
45        //Fill the pattern square
46        document.Fill(path);
47        //Set the stroke
48        document.SetStroke(pen);
49        //Draw the square outline
50        document.Draw(path);
51
52        //Calculate a distance from X0
53        if (sumX >= width)
54        {
55            sumX = squareSide;
56        }
57        else
58            sumX += x;
59    }
60
61    //Exit from current graphics state to upper level graphics state
62    document.WriteGraphicsRestore();
63
64    //Fill the text with the hatch pattern
65    HatchBrush brush = new HatchBrush(HatchStyle.DiagonalCross, Color.Red, Color.Yellow);
66    Font font = new Font("Arial", 96, FontStyle.Bold);
67    document.FillAndStrokeText("ABC", font, 200, 300, brush, pen);
68
69    //Outline the text with hatch pattern
70    brush = new HatchBrush(HatchStyle.Percent50, Color.Blue, Color.White);                
71    document.OutlineText("ABC", font, 200, 400, new Pen(brush, 5));
72
73
74    //Close current page
75    document.ClosePage();
76
77    //Save the document
78    document.Save();
79}

Для 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.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.