Робота з шаблонами штрихування у файлі PS | Python

Додайте шаблон штрихування в документ 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.Brush.

Щоб окреслити графічні об’єкти шаблоном штрихування, установіть шаблон штрихування як поточну фарбу в 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.