Версия 2.1.0

Quick search

Table Of Contents

Инструкции по обрезке (Scissor Instructions)

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

Инструкции по обрезке (Scissor instructions) позволяют ограничивать область рисования прямоугольной областью.

  • ScissorPush: Начинает обрезку и устанавливает границы области обрезки.

  • ScissorPop: Завершает обрезку.

Область, указанная для обрезки, задается в пикселях экранного пространства (screenspace) и должна быть указана как целые значения, а не числа с плавающей точкой.

Следующий код нарисует круг поверх виджета, обрезая круг так, чтобы он не выходил за границы виджета.

with self.canvas.after:
    # Если наш виджет находится внутри другого виджета, который модифицировал координаты
    # (например, ScrollView), нам нужно преобразовать их в координаты окна
    x,y = self.to_window(*self.pos)
    width, height = self.size
    # Нам необходимо преобразовать возможные числа с плавающей точкой, предоставленные Kivy,
    # в целые значения экранного пространства. В Python 3 функция round() возвращает целое число,
    # поэтому преобразование в int будет излишним.
    ScissorPush(x=int(round(x)), y=int(round(y)),
        width=int(round(width)), height=int(round(height)))
    Color(rgba=(1., 0., 0., .5))
    Ellipse(size=(width*2., height*2.),
        pos=self.center)
    ScissorPop()
class kivy.graphics.scissor_instructions.Rect(int x, int y, int width, int height)

Базовый класс: builtins.object

Класс Rect, используемый внутренне ScissorStack и ScissorPush для определения правильной области обрезки.

intersect(Rect other)
class kivy.graphics.scissor_instructions.ScissorPop

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

Отменяет текущую область обрезки. Вызывается после ScissorPush, после завершения рисования, которое нужно обрезать.

class kivy.graphics.scissor_instructions.ScissorPush(**kwargs)

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

Управляет областью и позицией области обрезки. По умолчанию устанавливает значения 0, 0, 100, 100.

Обрезка работает путем обрезания всего рисования за пределами прямоугольника, начиная с позиции int x, int y и имея стороны int width и int height в координатах окна (Window space).

class kivy.graphics.scissor_instructions.ScissorStack

Базовый класс: builtins.object

Класс, используемый внутренне для отслеживания текущего состояния областей glScissors. Не создавайте экземпляры этого класса, лучше ознакомьтесь с scissor_stack модуля.

pop()
push(element)