Kivy 简明教程
Kivy - SVGs
Kivy 框架支持显示 SVG 文件,尽管它在这个阶段仍然是高度试验性的。在计算机图形中,SVG 代表可伸缩矢量图形,它是由 W3 协会定义的标准,用于编码图像数据。
PNG 和 JPG 等图像格式基于光栅图形,其中图像数据存储为位图形式,它是一个颜色网格和像素位置。这种格式的缺点是,如果放大图像,图像在某个点之后会开始模糊。
另一方面,矢量图形图像在数学上存储为一系列 XML 指令,通过它们在屏幕上绘制图像。告诉一个查看程序如何“绘制”图像以显示在屏幕上。由于 SVG 文件与分辨率无关,因此可以进行任何大小的绘制。可以按任意比例放大或缩小,而不会降低质量或清晰度。
Kivy 库在“kivy.graphics.svg”模块中定义了 Svg 类。要对任何 Widget 的画布绘制 SVG 图像,我们可以使用以下语法 −
from kivy.graphics.svg import Svg
with widget.canvas:
svg = Svg("test.svg")
Svg 类具有以下属性 −
-
anchor_x − 缩放和旋转的水平锚点位置。默认值为 0。值 0、1 和 2 分别对应于“左”、“中”和“右”。
-
anchor_y − 缩放和旋转的垂直锚点位置。默认值为 0。值 0、1 和 2 分别对应于“左”、“中”和“右”。
-
color − 用于指定“currentColor”的 SvgElements 的默认颜色
-
height − 'double'
-
source − 要加载的 SVG 文件名/源。
-
width − 'double'
Example
以下程序使用“kv”脚本加载 Scatter widget。将“svg”对象放置在 GridLayout 中。将其源属性指定为该文件。以下是“kv”文件 −
<SvgWidget>:
do_rotation: True
<FloatLayout>:
canvas.before:
Color:
rgb: (1, 1, 1)
Rectangle:
pos: self.pos
size: self.size
Kivy App 类的 Python 代码 −
from kivy.uix.scatter import Scatter
from kivy.app import App
from kivy.graphics.svg import Svg
from kivy.uix.gridlayout import GridLayout
from kivy.lang import Builder
from kivy.core.window import Window
Window.size = (720,400)
class SvgWidget(Scatter):
def __init__(self, filename):
super(SvgWidget, self).__init__()
with self.canvas:
svg = Svg(source=filename)
self.size = Window.width, Window.height
class SvgDemoApp(App):
def build(self):
self.root = GridLayout(cols=1)
filename = "ship.svg"
svg = SvgWidget(filename)
self.root.add_widget(svg)
svg.scale = 4
SvgDemoApp().run()