Работа с образцами штриховки в 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-документе включает следующие этапы:
- Создайте выходной поток для полученного PS-файла.
- Создайте PsSaveOptions.
- Создайте PsDocument с уже созданным выходным потоком и сохраните параметры.
- Создайте необходимый графический контур или шрифт в зависимости от того, какой объект мы собираемся заливать или обводить.
- Создайте объект System.Drawing.HatchBrush с желаемым стилем.
- Установите кисть штриховки в качестве текущей краски в PsDocument.
- Заполните графический контур текущей краской или заполните текст. Если мы воспользуемся одним из методов заливки текста, принимающим в качестве параметра System.Drawing.Brush, предыдущий пункт можно проигнорировать.
- Закройте страницу.
- Сохраните документ.
Если нам нужно обводка (обведение) графических объектов штриховкой вместо последних 4 точек, то будет следующее:
Создайте объект System.Drawing.Pen с помощью кисти штриховки.
Установите это перо в качестве текущего штриха в PsDocument.
Обведите графический контур текущей обводкой или обведите текст. Если мы используем один из методов выделения текста, который принимает System.Drawing.Pen в качестве параметра, предыдущую точку можно игнорировать.
Закройте страницу.
Сохраните документ.
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.