Работа с образцами штриховки в файле PS | Питон
Добавить образец штриховки в документ PS
Образцы штриховки, часто состоящие из простых черно-белых изображений с различными рисунками штриховки, служат образцами текстурного мозаики. В Aspose.Page для Python через .NET эти шаблоны представлены классом aspose.pydrawing.drawing2d.HatchBrush, производным от aspose.pydrawing.Brush. В отличие от aspose.pydrawing.TextureBrush, HatchBrush предлагает именованные предопределенные стили, определяющие изображение, используемое для мозаики. Aspose.Page для Python предоставляет 53 стиля штриховки, каждый из которых можно использовать для заполнения или обводки в PsDocument.
Чтобы нарисовать графические объекты с помощью образца штриховки, создайте HatchBrush с желаемым стилем штриховки и передайте его в set_paint() или в один из методов fill_text() или fill_and_stroke_text(), принимающих * aspose.pydrawing.Кисть*.
Чтобы обвести графические объекты штриховкой, установите образец штриховки в качестве текущей краски в PsDocument, создайте новый aspose.pydrawing.Pen и передайте его в set_stroke() или в один из * Методы outline_text()* или fill_and_stroke_text(), принимающие aspose.pydrawing.Pen.
В приведенном ниже примере показано заполнение фигуры образцом штриховки, различные стили штриховки в Python, а также заполнение и обводка текста образцом штриховки.
Вот алгоритм рисования графических объектов штриховкой в новом документе PS:
- Создайте выходной поток для полученного PS-файла.
- Запустите PsSaveOptions.
- Создайте PsDocument с уже созданным выходным потоком и сохраните параметры.
- Создайте форму или шрифт в зависимости от того, какой объект мы собираемся залить или обвести.
- Создайте объект aspose.pydrawing.drawing2d.HatchBrush с нужным стилем.
- Установите краску штриховки в качестве текущей краски в PsDocument.
- Залейте фигуру текущей краской или заполните текст. Если мы воспользуемся одним из методов заливки текста, принимающим в качестве параметра aspose.pydrawing.Brush, предыдущий шаг можно пропустить.
- Закройте страницу.
- Сохраните документ.
Если нам нужно обводка (обводка) графические объекты штриховкой вместо последних 4 шагов будут иметь следующий вид:
- Установите краску штриховки в качестве текущей краски в PsDocument.
- Создайте объект aspose.pydrawing.Pen.
- Установите этот штрих в качестве текущего в PsDocument.
- Обведите фигуру текущей краской и обводкой или обведите текст. Если мы используем один из методов выделения текста, который принимает aspose.pydrawing.Pen в качестве параметра, предыдущий шаг можно проигнорировать.
- Закройте страницу.
- Сохраните документ.
1# The path to the documents directory.
2data_dir = Util.get_data_dir_working_with_hatches()
3
4# Create an output stream for the PostScript document
5with open(data_dir + "AddHatchPattern_outPS.ps", "wb") as out_ps_stream:
6 # Create the save options with A4 size
7 options = PsSaveOptions()
8
9 # Create a new 1-paged PS Document
10 document = PsDocument(out_ps_stream, options, False)
11
12 x0 = 20.
13 y0 = 100.
14 square_side = 32.
15 width = 500.
16 sum_x = 0.
17
18 # Restore a graphics state
19 document.write_graphics_save()
20
21 # Translate to initial point
22 document.translate(x0, y0)
23
24 # Create a rectngle path for every pattern square
25 path = aspose.pydrawing.drawing2d.GraphicsPath()
26 path.add_rectangle(aspose.pydrawing.RectangleF(0, 0, square_side, square_side))
27
28 # Create a pen for outlining the pattern square
29 pen = GraphicsFactory.create_pen_by_color_and_width(aspose.pydrawing.Color.black, 2)
30
31 # For every hatch pattern style
32 hatch_style = 0
33 while hatch_style <= 52:
34 # Set the paint with the current hatch brush style
35 document.set_paint(aspose.pydrawing.drawing2d.HatchBrush(aspose.pydrawing.drawing2d.HatchStyle(hatch_style),
36 aspose.pydrawing.Color.black, aspose.pydrawing.Color.white))
37
38 # Calculate the displacement not to go beyond the page bounds
39 x = square_side
40 y = 0
41 if sum_x >= width:
42 x = -(sum_x - square_side)
43 y += square_side
44 # Translate the current graphics state
45 document.translate(x, y)
46 # Fill the pattern square
47 document.fill(path)
48 # Set the stroke
49 document.set_stroke(pen)
50 # Draw the square outline
51 document.draw(path)
52
53 # Calculate the distance from X0
54 if sum_x >= width:
55 sum_x = square_side
56 else:
57 sum_x += x
58 hatch_style += 1
59
60 # Restore the graphics state
61 document.write_graphics_restore()
62
63 # Fill the text with the hatch pattern
64 brush = aspose.pydrawing.drawing2d.HatchBrush(aspose.pydrawing.drawing2d.HatchStyle.DIAGONAL_CROSS,
65 aspose.pydrawing.Color.red, aspose.pydrawing.Color.yellow)
66 font = ExternalFontCache.fetch_dr_font("Arial", 96, aspose.pydrawing.FontStyle.BOLD)
67 document.fill_and_stroke_text("ABC", font, 200, 300, brush, pen)
68
69 # Outline text with the hatch pattern
70 brush = aspose.pydrawing.drawing2d.HatchBrush(aspose.pydrawing.drawing2d.HatchStyle.PERCENT50,
71 aspose.pydrawing.Color.blue, aspose.pydrawing.Color.white)
72 document.outline_text("ABC", font, 200, 400, GraphicsFactory.create_pen_by_brush_and_width(brush, 5))
73
74
75 # Close the current page
76 document.close_page()
77
78 # Save the document
79 document.save()
Результат запуска этого кода:
Вы можете загрузить примеры и файлы данных с сайта GitHub.