淘先锋技术网

首页 1 2 3 4 5 6 7

6.Pygame绘制形状

这次我们将讨论如何使用pygame.draw模块将形状绘制到我们的 Pygame 窗口。该模块本质上是各种绘图函数的集合,每个函数用于绘制一个独特的形状或对象。

Pygame 中的绘图函数

下面是我们在 Pygame 中可用的所有绘图函数的列表。

pygame.draw.polygon(surface, color, points) -> Rect

pygame.draw.polygon(surface, color, points, width=0) -> Rect

pygame.draw.line(surface, color, start_pos, end_pos) -> Rect

pygame.draw.line(surface, color, start_pos, end_pos, width=1) -> Rect

pygame.draw.lines(surface, color, closed, points) -> Rect

pygame.draw.lines(surface, color, closed, points, width=1) -> Rect

pygame.draw.circle(surface, color, center, radius) -> Rect

pygame.draw.circle(surface, color, center, radius, width=0, draw_top_right=None, draw_top_left=None, draw_bottom_left=None, draw_bottom_right=None) -> Rect

 
pygame.draw.ellipse(surface, color, rect) -> Rect
pygame.draw.ellipse(surface, color, rect, width=0) -> Rect

pygame.draw.rect(surface, color, rect) -> Rect

pygame.draw.rect(surface, color, rect, width=0, border_radius=0, border_top_left_radius=-1, border_top_right_radius=-1, border_bottom_left_radius=-1, border_bottom_right_radius=-1) -> Rect

在 Pygame 中画线

pygame.draw.line(surface, color, start_point, end_point, width=1)
surface:在指定suerface上画图。
color:绘制形状的颜色。
start_point:由 x 和 y 值对组成的元组/列表,它定义了绘制直线的起始位置。
end_point:由 x 和 y 值对组成的元组/列表,它定义了绘制线条的结束位置。
width:默认值 1。如果 width < 1,则不会绘制线条。大于 1 的值将增加线条粗细。

import pygame
import sys
pygame.init()
 
display = pygame.display.set_mode((300, 300))
display.fill((255, 255, 255))
 
pygame.draw.line(display, (0, 0, 255),
                 (10,10),(100,100), width=2)
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
    pygame.display.update()

Pygame - 如何画线

lines()如果我们必须同时绘制多条线,我们也可以改用该函数。

surface:在指定suerface上画图。
color:绘制形状的颜色。
closed:指定第一个点和最后一个点之间是否有一条线(False默认情况下)
pointlist:xy 坐标对的列表,其中每个相邻对都用一条线连接到另一个。
width:默认值 1。如果 width < 1,则不会绘制线条。大于 1 的值将增加线条粗细。

import pygame
import sys
pygame.init()
 
display = pygame.display.set_mode((300, 300))
display.fill((255, 255, 255))
 
pygame.draw.lines(display, (0, 0, 255), closed=True, 
                  points= [(20,20), (60,120), (200, 180)],
                  width=2)
 
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
    pygame.display.update()

Pygame - 如何绘制多边形

surface:在指定suerface上画图。
color:绘制形状的颜色。
pointlist:参数是一个包含坐标或“点”的元组。例如,对于一个矩形,您将传递一个包含 4 个坐标对的元组。(第一点和最后一点自动连接)
width:默认值为 0,这意味着多边形将被填充(颜色)。大于 0 的值将使其未填充,宽度将控制边框厚度。

import pygame
import sys
pygame.init()
 
display = pygame.display.set_mode((300, 300))
display.fill((255, 255, 255))
 
pygame.draw.polygon(display, (0, 0, 255), 
                  [(120,120), (40,160), (40,220), 
                  (200, 220), (200,160)], width=0)
 
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
    pygame.display.update()

多边形被填充,因为宽度 = 0。尝试更改值以查看它如何影响输出。

在 Pygame 中画圆

surface:在指定suerface上画图。
color:绘制形状的颜色。
center:元组/列表,定义圆的原点坐标对。
radius:定义圆的半径。(中心到边缘的距离)
width:默认值为0,表示Circle将被填充(颜色)。大于 0 的值将使其未填充,宽度将控制边框厚度。

import pygame
import sys
pygame.init()
 
display = pygame.display.set_mode((300, 300))
display.fill((255, 255, 255))
 
pygame.draw.circle(display, (0, 0, 255),
                   center=(150,150), radius=50, width=0)
 
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
    pygame.display.update()

在 Pygame 中绘制椭圆

尽管在结构上与圆非常相似,但椭圆的参数略有不同。

surface:在指定suerface上画图。
color:绘制形状的颜色。
bounding_rectangle:采用一个 Rect 对象,该对象定义了它将被限制在其中的矩形。
宽度:默认值为 0,表示将填充椭圆(颜色)。大于 0 的值将使其未填充,宽度将控制边框厚度。

import pygame
import sys
pygame.init()
 
display = pygame.display.set_mode((300, 300))
display.fill((255, 255, 255))
 
pygame.draw.ellipse(display, (0, 0, 255),
                   pygame.Rect(40, 80, 200, 80), width=0)
 
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
    pygame.display.update()

在 Pygame 中绘制矩形

surface:在指定suerface上画图。
color:绘制形状的颜色。
rectangle_tuple:(阅读下面的完整描述)
width:默认值为0,表示矩形将被填充(颜色)。大于 0 的值将使其未填充,宽度将控制边框厚度。
border_radius:较高的值可以使边框边缘“圆润”。
这个函数不像 Circle 或 Line 函数那样采用一组坐标,而是采用一个名为 的参数rectangle_tuple,它是一个包含 4 个值的元组。每个值的用途如下所示。(顺序很重要,千万不能搞错)。

矩形左上角的 X 坐标,也称为矩形开始处的 X 坐标。
矩形左上角的 Y 坐标,也称为矩形开始处的 Y 坐标。
矩形的宽度(长度),以像素为单位。
矩形的高度(以像素为单位)。

import pygame
import sys
pygame.init()
 
display = pygame.display.set_mode((300, 300))
display.fill((255, 255, 255))
 
pygame.draw.rect(display, (0, 0, 255),
                   (40, 80, 200, 80), width=0, border_radius=20)                                        
 
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
    pygame.display.update()

Pygame 中的矩形不仅仅用于绘制形状。它们广泛用于实体之间的碰撞检测(点击链接以获得适当的教程)。