Table Of Contents
Scissor Instructions¶
New in version 1.9.1.
Scissor instructions clip your drawing area into a rectangular region.
ScissorPush
: Begins clipping, sets the bounds of the clip spaceScissorPop
: Ends clipping
The area provided to clip is in screenspace pixels and must be provided as integer values not floats.
The following code will draw a circle on top of our widget while clipping the circle so it does not expand beyond the widget borders.
with self.canvas.after:
#If our widget is inside another widget that modified the coordinates
#spacing (such as ScrollView) we will want to convert to Window coords
x,y = self.to_window(*self.pos)
width, height = self.size
#We must convert from the possible float values provided by kivy
#widgets to an integer screenspace, in python3 round returns an int so
#the int cast will be unnecessary.
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)¶
Bases:
builtins.object
Rect class used internally by ScissorStack and ScissorPush to determine correct clipping area.
- intersect(self, Rect other)¶
- class kivy.graphics.scissor_instructions.ScissorPop¶
Bases:
kivy.graphics.instructions.Instruction
Pop the scissor stack. Call after ScissorPush, once you have completed the drawing you wish to be clipped.
- class kivy.graphics.scissor_instructions.ScissorPush(**kwargs)¶
Bases:
kivy.graphics.instructions.Instruction
to control the area and position of the scissoring region. Defaults to 0, 0, 100, 100
Scissor works by clipping all drawing outside of a rectangle starting at int x, int y position and having sides of int width by int height in Window space coordinates
- class kivy.graphics.scissor_instructions.ScissorStack¶
Bases:
builtins.object
Class used internally to keep track of the current state of glScissors regions. Do not instantiate, prefer to inspect the module’s scissor_stack.
- pop(self)¶
- push(self, element)¶