Версия 2.1.0

Quick search

Table Of Contents

Инструкции контекста

Инструкции контекста представляют собой элементы, не являющиеся графическими, такие как:

  • Манипуляции матрицей (PushMatrix, PopMatrix, Rotate, Translate, Scale, MatrixInstruction)

  • Манипуляции цветом (Color)

  • Привязки текстур (BindTexture)

Изменено в версии 1.0.8: Инструкция LineWidth была удалена. Она не работала ранее, и у нас не было функционирующей реализации. Нам нужно провести больше экспериментов чтобы сделать это правильно. Проверьте ошибку #207 для получения дополнительной информации.

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

Базовый класс: kivy.graphics.instructions.ContextInstruction

Инструкция BindTexture связывает текстуру и включает GL_TEXTURE_2D для последующего рисования.

Параметры
texture: Texture

Указывает текстуру, которую нужно привязать к заданному индексу.

source

Устанавливает/получает источник (имя файла) для загрузки текстуры.

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

Базовый класс: kivy.graphics.instructions.ContextInstruction

рисуется после нее.

Это представляет собой цвет в диапазоне от 0 до 1, но применяется как множитель к текстуре любых инструкций вершины, следующих за ней на холсте. Если текстура не установлена, инструкция вершины принимает точный цвет инструкции Color.

Например, если у Прямоугольника есть текстура с однородным цветом (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. В этом случае компонента Color вне диапазона 0-1 дает видимый результат, так как интенсивность синей компоненты удваивается.

Чтобы объявить цвет в Python, вы можете сделать следующее:

from kivy.graphics import Color
# создать красный цвет
c = Color(1, 0, 0)
# создать синий цвет
c = Color(0, 1, 0)
# создать синий цвет с 50% прозрачностью
c = Color(0, 1, 0, .5)

# используя режим hsv
c = Color(0, 1, 1, mode='hsv')
# используя режим hsv + альфа
c = Color(0, 1, 1, .2, mode='hsv')

Вы также можете установить компоненты цвета, доступные как свойства, передав их как именованные аргументы:

<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

Альфа-компонент, в диапазоне от 0 до 1.

b

Синий компонент, в диапазоне от 0 до 1.

g

Зеленый компонент, в диапазоне от 0 до 1.

h

Компонент оттенка (Hue), в диапазоне от 0 до 1.

hsv

Цвет в формате HSV, список из 3 значений в диапазоне от 0 до 1, альфа будет равна 1.

r

Красный компонент, в диапазоне от 0 до 1.

rgb

Цвет в формате RGB, список из 3 значений в диапазоне от 0 до 1. Альфа будет равна 1.

rgba

Цвет в формате RGBA, список из 4 значений в диапазоне от 0 до 1.

s

Компонент насыщенности (Saturation), в диапазоне от 0 до 1.

v

Компонент значения (Value), в диапазоне от 0 до 1.

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

Базовый класс: kivy.graphics.instructions.ContextInstruction

matrix

Свойство Matrix. Матрица из модуля преобразования. Установка матрицы с использованием этого свойства при внесении изменений важна, потому что она уведомляет контекст о внесенных изменениях.

stack

Имя стека матрицы для использования. Может быть ‘modelview_mat’, ‘projection_mat’ или ‘frag_modelview_mat’.

Добавлено в версии 1.6.0.

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

Базовый класс: kivy.graphics.instructions.ContextInstruction

stack

Имя стека матрицы для использования. Может быть ‘modelview_mat’, ‘projection_mat’ или ‘frag_modelview_mat’.

Добавлено в версии 1.6.0.

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

Базовый класс: kivy.graphics.instructions.ContextInstruction

stack

Имя стека матрицы для использования. Может быть ‘modelview_mat’, ‘projection_mat’ или ‘frag_modelview_mat’.

Добавлено в версии 1.6.0.

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

Базовый класс: kivy.graphics.context_instructions.Transform

на матрицу моделирования. Вы можете установить свойства инструкции после этого, например,

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

Свойство для получения/установки угла вращения.

axis

Свойство для получения/установки оси вращения.

Формат оси: (x, y, z).

origin

Центр вращения.

Добавлено в версии 1.7.0.

Формат центра может быть (x, y) или (x, y, z).

set(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)

Базовый класс: kivy.graphics.context_instructions.Transform

Создание с использованием одного или трех аргументов:

Scale(s)         # масштабировать все три оси одинаково
Scale(x, y, z)   # масштабировать оси независимо

Устарело начиная с версии 1.6.0: Устаревшее одиночное свойство масштаба в пользу x, y, z, xyz независимых масштабных коэффициентов.

origin

Центр масштабирования.

Добавлено в версии 1.9.0.

Формат центра может быть (x, y) или (x, y, z).

scale

Свойство для получения/установки масштаба.

Устарело начиная с версии 1.6.0: Устаревшее в пользу свойств масштаба по осям x, y, z, xyz и т. д.

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)

Базовый класс: kivy.graphics.context_instructions.Transform

Создайте с помощью:

Translate(x, y)         # переместить только по двум осям
Translate(x, y, z)      # переместить по всем трём осям
x

Свойство для получения/установки перемещения по оси X.

xy

2-й кортеж с вектором перемещения в 2D для осей x и y.

xyz

3-й кортеж с вектором перемещения в 3D по осям x, y и z.

y

Свойство для получения/установки перемещения по оси Y.

z

Свойство для получения/установки перемещения по оси Z.

kivy.graphics.context_instructions.gl_init_resources()