Работа с образцами штриховки в файле 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:

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

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

  1. Установите краску штриховки в качестве текущей краски в PsDocument.
  2. Создайте объект aspose.pydrawing.Pen.
  3. Установите этот штрих в качестве текущего в PsDocument.
  4. Обведите фигуру текущей краской и обводкой или обведите текст. Если мы используем один из методов выделения текста, который принимает aspose.pydrawing.Pen в качестве параметра, предыдущий шаг можно проигнорировать.
  5. Закройте страницу.
  6. Сохраните документ.
 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()

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

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

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

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

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.