📜  PyCairo – 创建文本路径

📅  最后修改于: 2022-05-13 01:54:28.434000             🧑  作者: Mango

PyCairo – 创建文本路径

在本文中,我们将学习如何在Python中使用 PyCairo 显示文本并将文本转换为路径。您可以将文本字符串转换为路径。一旦你有了路径,你就可以填充它(这看起来类似于以正常方式显示文本),或者只是勾勒它,或者两者兼而有之。

PyCairo :Pycairo 是一个Python模块,为 cairo 图形库提供绑定。这个库用于在Python中创建 SVG 即矢量文件。打开 SVG 文件以查看它(只读)的最简单快捷的方法是使用现代网络浏览器,如 Chrome、Firefox、Edge 或 Internet Explorer——几乎所有这些都应该为 SVG 格式提供某种渲染支持.

SVG文件是使用万维网联盟 (W3C) 创建的二维矢量图形格式的图形文件。它使用基于 XML 的文本格式描述图像。 SVG 文件是作为在 Web 上显示矢量图形的标准格式而开发的。

实施步骤:

  1. 导入 Pycairo 模块。
  2. 创建一个 SVG 表面对象并向其添加上下文。
  3. 使用 set_font_size ( ) 、 select_font_face( ) 设置文本字体大小和样式
  4. 使用 show_path ( ) 显示文本
  5. 使用 set_source_rgb ( ) 、 set_line_width( ) 设置路径颜色和宽度

下面是实现:

Python3
# importing pycairo
import cairo
  
# creating a SVG surface
# here geek95 is file name & 700, 700 is dimension
with cairo.SVGSurface("geek95.svg", 700, 700) as surface:
  
    # creating a cairo context object for SVG surface
    # useing Context method
    Context = cairo.Context(surface)
      
    # setting color of the context
    Context.set_source_rgb(1, 0, 0)
      
    # approximate text height
    Context.set_font_size(50)
      
    # Font Style
    Context.select_font_face(
        "Arial", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL)
      
    # position for the text
    Context.move_to(35, 45)
      
    # displays the text
    Context.text_path("GeeksforGeeks.org")
      
    # Width of outline
    Context.set_line_width(2)
      
    # stroke out the color and width property
    Context.stroke()
  
# printing message when file is saved
print("File Saved")


Python3
# importing pycairo
import cairo
  
# Defining surface area
WIDTH = 3
HEIGHT = 3
PIXEL_SCALE = 200
  
# creating a SVG surface
# here geek95 is file name
surface = cairo.SVGSurface('geek95.svg', WIDTH*PIXEL_SCALE, 
                           HEIGHT*PIXEL_SCALE)
  
# creating a cairo context object for SVG surface
# useing Context method
context = cairo.Context(surface)
  
# Scaleing Surface
context.scale(PIXEL_SCALE, PIXEL_SCALE)
  
# Creating Rectangle For Background
context.rectangle(0, 0, WIDTH, HEIGHT)
  
# Color of Rectangle For Background
context.set_source_rgb(0.3, 0.5, 1)
  
# Filling Color in Rectangle
context.fill()
  
# defining color
context.set_source_rgb(1, 0, 0)
  
# Font Style
context.set_font_size(0.55)
  
# font style
context.select_font_face(
    "Arial", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL)
  
# Creating Rectangle
context.rectangle(0.2, 0.8, 2.6, 1)
  
# move to x, y percentage of surface
context.move_to(0.3, 1.5)
  
# Display Text
context.text_path("MARVEL")
  
# Filling the area
context.set_fill_rule(cairo.FILL_RULE_EVEN_ODD)
  
# Filling color
context.fill()
  
# stroke out the color and width property
context.stroke()
  
# printing message when file is saved
print("File Saved")


输出 :

示例 2:

蟒蛇3

# importing pycairo
import cairo
  
# Defining surface area
WIDTH = 3
HEIGHT = 3
PIXEL_SCALE = 200
  
# creating a SVG surface
# here geek95 is file name
surface = cairo.SVGSurface('geek95.svg', WIDTH*PIXEL_SCALE, 
                           HEIGHT*PIXEL_SCALE)
  
# creating a cairo context object for SVG surface
# useing Context method
context = cairo.Context(surface)
  
# Scaleing Surface
context.scale(PIXEL_SCALE, PIXEL_SCALE)
  
# Creating Rectangle For Background
context.rectangle(0, 0, WIDTH, HEIGHT)
  
# Color of Rectangle For Background
context.set_source_rgb(0.3, 0.5, 1)
  
# Filling Color in Rectangle
context.fill()
  
# defining color
context.set_source_rgb(1, 0, 0)
  
# Font Style
context.set_font_size(0.55)
  
# font style
context.select_font_face(
    "Arial", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL)
  
# Creating Rectangle
context.rectangle(0.2, 0.8, 2.6, 1)
  
# move to x, y percentage of surface
context.move_to(0.3, 1.5)
  
# Display Text
context.text_path("MARVEL")
  
# Filling the area
context.set_fill_rule(cairo.FILL_RULE_EVEN_ODD)
  
# Filling color
context.fill()
  
# stroke out the color and width property
context.stroke()
  
# printing message when file is saved
print("File Saved")

输出: