这个 shapes 模块是一个易于使用的选项,用于创建和操作彩色形状,如矩形、圆形和线条。形状可以根据需要调整大小、定位和旋转,并且可以更改它们的颜色和不透明度。所有形状都是使用OpenGL基元实现的,因此可以使用 批处理渲染 。在下面的示例中 Batch 为简洁起见将被省略,但通常情况下,您总是希望使用批处理呈现来提高性能。
有关绘制更复杂形状的信息,请参见 着色器和渲染 模块。
创建形状可以使用特定的位置、大小和颜色构造各种形状:
circle = shapes.Circle(x=100, y=150, radius=100, color=(50, 225, 30))square = shapes.Rectangle(x=200, y=200, width=200, height=200, color=(55, 55, 255))也可以在创建后更改颜色或设置不透明度。对于不同级别的透明度,可以在0-255的范围内设置不透明度:
circle.opacity = 120形状的大小也可以在创建后进行调整:
square.width = 200circle.radius = 99锚点与pyglet中的图像类似,可以设置形状的“锚点”。这与形状在x轴和y轴上的中心有关。对于圆,默认锚点是圆的中心。对于矩形,它是左下角。根据您需要如何定位形状,这一点可以更改。对于矩形,如果您要旋转它,这尤其有用,因为形状将围绕锚点旋转。在本例中,创建了一个矩形,然后将锚点设置为中心::
rectangle = shapes.Rectangle(x=400, y=400, width=100, height=50)rectangle.anchor_x = 50rectangle.anchor_y = 25# or, set at the same time:rectangle.anchor_position = 50, 25# The rectangle is then rotated around its anchor point:rectangle.rotation = 45如果计划创建大量形状,则可以选择设置默认锚点:
shapes.Rectangle._anchor_x = 100shapes.Rectangle._anchor_y = 50高级运营您可以使用 in 用于检查点是否位于形状内部的运算符::
circle = shapes.Circle(x=100, y=100, radius=50)if (200, 200) in circle:circle.color = (255, 0, 0)以下形状具有上述功能:
圆
椭圆
扇区
线
长方形
BorderedRectangle
三角形
多边形
星星
备注
Puglet现在将Star视为半径为 (outer_radius + inner_radius) / 2 。
它也可用于锚定和旋转的形状。