📜  PyCairo – 我们如何获得填充范围?

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

PyCairo – 我们如何获得填充范围?

在本文中,我们将学习如何在Python中使用 PyCairo 获取填充范围。在给定当前路径和填充参数的情况下,通过 context.fill() 操作计算用户坐标中的边界框,该边界框覆盖将受到影响的区域(“彩色”区域)。如果当前路径为空,则返回一个空矩形 (0, 0, 0, 0)。不考虑表面尺寸和剪裁。

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

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

请注意,fill_extents() 必须做更多的工作才能根据填充规则计算精确的彩色区域。

示例 1:

Python3
# importing pycairo
import cairo
  
# creating a SVG surface
# here geek1 is file name & 700, 700 is dimension
with cairo.SVGSurface("geek1.svg", 700, 700) as surface:
  
    # creating a cairo context object
    context = cairo.Context(surface)
  
    # creating a arc with using close path method
    context.arc(300, 60, 40, 0, 1*22/7)
  
    # makeing close path
    context.close_path()
    context.fill()
  
    # getting fill extends
    a = context.fill_extents()
  
    # stroke the context to remove the moved pen
    context.stroke()
  
# printing message when file is saved
print(a)


Python3
# importing pycairo
import cairo
  
# creating a SVG surface
# here geek1 is file name & 700, 700 is dimension
with cairo.SVGSurface("geek1.svg", 700, 700) as surface:
  
    # creating a cairo context object
    context = cairo.Context(surface)
  
    # creating a arc with using close path method
    context.arc(300, 60, 40, 0, 1*22/7)
  
    # getting fill extends
    a = context.fill_extents()
  
    # makeing close path
    context.close_path()
    context.fill()
  
    # stroke the context to remove the moved pen
    context.stroke()
  
# printing message when file is saved
print(a)


输出 :

(0.0, 0.0, 0.0, 0.0)

例子2:

蟒蛇3

# importing pycairo
import cairo
  
# creating a SVG surface
# here geek1 is file name & 700, 700 is dimension
with cairo.SVGSurface("geek1.svg", 700, 700) as surface:
  
    # creating a cairo context object
    context = cairo.Context(surface)
  
    # creating a arc with using close path method
    context.arc(300, 60, 40, 0, 1*22/7)
  
    # getting fill extends
    a = context.fill_extents()
  
    # makeing close path
    context.close_path()
    context.fill()
  
    # stroke the context to remove the moved pen
    context.stroke()
  
# printing message when file is saved
print(a)

输出 :

(260.0, 59.94921875, 340.0, 100.0)