上下文指令

上下文指令表示非图形元素,例如:

  • 矩阵操作(PushMatrix、PopMatrix、Rotate、Translate、Scale、MatrixInstruction)

  • 颜色操作(Color)

  • 纹理绑定(BindTexture)

在 1.0.8 版本发生变更: LineWidth 指令已被移除。它之前并未正常工作,而且我们实际上也没有可用的实现。我们需要进行更多实验才能将其完善。更多信息请查看 bug #207

class kivy.graphics.context_instructions.BindTexture(**kwargs)

基类:ContextInstruction

BindTexture 指令将绑定一个纹理,并为后续绘制启用 GL_TEXTURE_2D。

参数:
texture:纹理

指定要绑定到给定索引的纹理。

source

设置/获取用于加载纹理的源(文件名)。

class kivy.graphics.context_instructions.Color(*args, **kwargs)

基类:ContextInstruction

在其之后绘制。

这表示一个介于0和1之间的颜色,但在画布中,它作为*乘数*应用于其后任何顶点指令的纹理。如果未设置纹理,顶点指令将采用Color指令的精确颜色。

例如,如果一个 Rectangle 的纹理具有统一颜色 (0.5, 0.5, 0.5, 1.0),且其前面的 Color 指令的 rgba=(1, 0.5, 2, 1),那么实际可见的颜色将是 (0.5, 0.25, 1.0, 1.0),因为 Color 指令作为乘法器应用于每个 rgba 分量。在这种情况下,超出 0-1 范围的 Color 分量会产生可见效果,因为蓝色分量的强度被加倍了。

在Python中声明一个Color,你可以这样做:

from kivy.graphics import Color

# create red v
c = Color(1, 0, 0)
# create blue color
c = Color(0, 1, 0)
# create blue color with 50% alpha
c = Color(0, 1, 0, .5)

# using hsv mode
c = Color(0, 1, 1, mode='hsv')
# using hsv mode + alpha
c = Color(0, 1, 1, .2, mode='hsv')

你也可以通过关键字参数来设置颜色组件,这些组件作为属性可用,例如::

c = Color(b=0.5)  # sets the blue component only

在kv语言中,你可以直接设置颜色属性:

<Rule>:
    canvas:
        # red color
        Color:
            rgb: 1, 0, 0
        # blue color
        Color:
            rgb: 0, 1, 0
        # blue color with 50% alpha
        Color:
            rgba: 0, 1, 0, .5

        # using hsv mode
        Color:
            hsv: 0, 1, 1
        # using hsv mode + alpha
        Color:
            hsv: 0, 1, 1
            a: .5
a

Alpha 分量,取值范围在 0 到 1 之间。

b

蓝色分量,取值范围在0到1之间。

g

绿色分量,取值范围在0到1之间。

h

色调分量,取值范围在0到1之间。

hsv

HSV 颜色,包含 3 个 0-1 范围内的值,alpha 将为 1。

r

红色分量,取值范围在0到1之间。

rgb

RGB 颜色,由 0-1 范围内的 3 个值组成的列表。alpha 值将为 1。

rgba

RGBA颜色,由4个0-1范围内的值组成的列表。

s

饱和度分量,取值范围在0到1之间。

v

值组件,范围在0到1之间。

class kivy.graphics.context_instructions.MatrixInstruction(*args, **kwargs)

基类:ContextInstruction

matrix

矩阵属性。来自变换模块的矩阵。当发生更改时,使用此属性设置矩阵非常重要,因为它会通知上下文有关更新的信息。

stack

要使用的矩阵栈名称。可以是'modelview_mat'、'projection_mat'或'frag_modelview_mat'。

在 1.6.0 版本加入.

class kivy.graphics.context_instructions.PopMatrix(*args, **kwargs)

基类:ContextInstruction

stack

要使用的矩阵栈名称。可以是'modelview_mat'、'projection_mat'或'frag_modelview_mat'。

在 1.6.0 版本加入.

class kivy.graphics.context_instructions.PushMatrix(*args, **kwargs)

基类:ContextInstruction

stack

要使用的矩阵栈名称。可以是'modelview_mat'、'projection_mat'或'frag_modelview_mat'。

在 1.6.0 版本加入.

class kivy.graphics.context_instructions.Rotate(*args, **kwargs)

基类:Transform

在模型视图矩阵上。之后,您可以通过例如::来设置指令的属性。

rot.angle = 90
rot.axis = (0, 0, 1)
angle

用于获取/设置旋转角度的属性。

axis

用于获取/设置旋转轴的属性。

轴的格式为(x,y,z)。

origin

旋转的原点。

在 1.7.0 版本加入.

原点的格式可以是 (x, y) 或 (x, y, z)。

set(self, float angle, float ax, float ay, float az)

设置旋转的角度和轴。

>>> rotationobject.set(90, 0, 0, 1)

自 1.7.0 版本弃用: set() 方法不使用新的 origin 属性。

class kivy.graphics.context_instructions.Scale(*args, **kwargs)

基类:Transform

使用三个参数创建:

Scale(x, y, z)   # scale the axes independently

在 2.3.0 版本发生变更: 允许使用关键字参数来提供x、y和z。已移除已弃用的Scale(s),改用Scale(x, y, z)。

origin

缩放的起点。

在 1.9.0 版本加入.

原点的格式可以是 (x, y) 或 (x, y, z)。

x

用于获取/设置X轴缩放的属性。

在 1.6.0 版本发生变更.

xyz

3D 中 x、y、z 轴上的三元组缩放向量。

在 1.6.0 版本发生变更.

y

用于获取/设置Y轴缩放的属性。

在 1.6.0 版本发生变更.

z

用于获取/设置Z轴缩放的属性。

在 1.6.0 版本发生变更.

class kivy.graphics.context_instructions.Translate(*args, **kwargs)

基类:Transform

通过以下任一方式构造:

Translate(x, y)         # translate in just the two axes
Translate(x, y, z)      # translate in all three axes

在 2.3.0 版本发生变更: 允许使用kwargs来提供x、y和z。

x

用于获取/设置X轴平移的属性。

xy

2元组,包含二维空间中x轴和y轴的平移向量。

xyz

3D空间中x、y、z轴上的三维平移向量。

y

用于获取/设置Y轴平移的属性。

z

用于获取/设置Z轴平移的属性。

kivy.graphics.context_instructions.gl_init_resources()