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)¶