Pygame编程(3)draw模块

draw模块

函数

  • pygame.draw.rect
    • 画一个矩形
    • rect(surface, color, rect) -> Rect
    • 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.draw.polygon
    • 画一个多边形
    • polygon(surface, color, points) -> Rect
    • polygon(surface, color, points, width=0) -> Rect
  • pygame.draw.circle
    • 画一个圆形
    • circle(surface, color, center, radius) -> Rect
    • 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
    • 画一个椭圆
    • ellipse(surface, color, rect) -> Rect
    • ellipse(surface, color, rect, width=0) -> Rect
  • pygame.draw.arc
    • 画一条椭圆弧
    • arc(surface, color, rect, start_angle, stop_angle) -> Rect
    • arc(surface, color, rect, start_angle, stop_angle, width=1) -> Rect
  • pygame.draw.line
    • 画一条直线
    • line(surface, color, start_pos, end_pos) -> Rect
    • line(surface, color, start_pos, end_pos, width=1) -> Rect
  • pygame.draw.lines
    • 绘制多个连续的直线段
    • lines(surface, color, closed, points) -> Rect
    • lines(surface, color, closed, points, width=1) -> Rect
  • pygame.draw.aaline
    • 画一条直的抗锯齿线
    • aaline(surface, color, start_pos, end_pos) -> Rect
    • aaline(surface, color, start_pos, end_pos, blend=1) -> Rect
  • pygame.draw.aalines
    • 绘制多个连续的直线抗锯齿线段
    • aalines(surface, color, closed, points) -> Rect
    • aalines(surface, color, closed, points, blend=1) -> Rect

实例

python 复制代码
import sys
import math
import pygame
from pygame.locals import *

COLOR_BLACK = (0, 0, 0)
COLOR_WHITE = (255, 255, 255)
COLOR_RED   = (255, 0, 0)
COLOR_GREEN = (0, 255, 0)
COLOR_BLUE  = (0, 0, 255)

pygame.init()

screen = pygame.display.set_mode((700, 600), flags=0)

# 画一条直线
pygame.draw.line(screen, (255, 0, 0), (100, 10), (400, 20), width=5)

# 画一条抗锯齿直线
pygame.draw.aaline(screen, (255, 0, 0), (100, 50), (400, 60), blend=1)

# 画多条连续的直线
pygame.draw.lines(screen, (255, 0, 0), closed=False, points=[[400, 10], [420, 50], [450, 30], [420, 20]], width=1)

# 画多条连续的抗锯齿直线
pygame.draw.aalines(screen, (255, 0, 0), closed=True, points=[[400+60, 10], [420+60, 50], [450+60, 30], [420+60, 20]], blend=1)

# 画圆形, (线宽等于半径 即可画一个实心圆形)
pygame.draw.circle(screen, (255, 0, 0), (50, 80), 30,  5)
pygame.draw.circle(screen, (255, 0, 0), (50, 150), 30, 5, draw_top_left=True)
pygame.draw.circle(screen, (255, 0, 0), (50, 200), 30, 5, draw_top_right=True)
pygame.draw.circle(screen, (255, 0, 0), (50, 250), 30, 5, draw_bottom_left=True)
pygame.draw.circle(screen, (255, 0, 0), (50, 300), 30, 5, draw_bottom_right=True)

# 画矩形
pygame.draw.rect(screen, (255, 0, 0), rect=(100, 80, 100, 100))
pygame.draw.rect(screen, (255, 0, 0), rect=(250, 80, 100, 100), width=1)
pygame.draw.rect(screen, (0, 255, 0), rect=(400, 80, 100, 100), border_radius=15)
pygame.draw.rect(screen, (0, 255, 0), rect=(550, 80, 100, 100), width=2, border_radius=15)
pygame.draw.rect(screen, (0, 255, 0), rect=(100, 200, 100, 100), border_top_left_radius=15)
pygame.draw.rect(screen, (0, 255, 0), rect=(250, 200, 100, 100), border_top_right_radius=15)
pygame.draw.rect(screen, (0, 255, 0), rect=(400, 200, 100, 100), border_bottom_left_radius=15)
pygame.draw.rect(screen, (0, 255, 0), rect=(550, 200, 100, 100), border_bottom_right_radius=15)

# 画多边形
pygame.draw.polygon(screen, (0, 0, 255), points=[[100, 320],[200, 450], [250, 350]], width=0)
pygame.draw.polygon(screen, (0, 0, 255), points=[[250, 320],[350, 450], [400, 350]], width=3)
pygame.draw.polygon(screen, (0, 0, 255), points=[[250+150, 320],[350+150, 450], [400+150, 350], [400+200, 380]], width=3)

# 绘制椭圆
pygame.draw.ellipse(screen, (255, 255, 255), rect=(20, 400, 100, 50), width=0)
pygame.draw.ellipse(screen, (255, 255, 255), rect=(20, 480, 100, 50), width=2)


# 画一段弧形
rect_arc1 = pygame.draw.arc(screen, (255, 255, 0), rect=(100, 500, 100, 80), start_angle=0, stop_angle=(math.pi/180)*270, width=3)
print(rect_arc1)



# 更新显示
pygame.display.flip()
pygame.display.update()

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

        
相关推荐
chushiyunen16 小时前
pygame实现射击游戏
python·游戏·pygame
淘矿人1 天前
从0到1:用Claude启动你的第一个项目
开发语言·人工智能·git·python·github·php·pygame
penngo1 天前
# 使用Claude Code开发植物大战僵尸游戏(pygame,附源码)
python·游戏·pygame
龙腾AI白云1 天前
AI项目团队意见分歧?协调与决策方法
人工智能·pygame
yuanpan2 天前
Python Pygame 入门教程:从零学会创建窗口、绘图和游戏交互
python·游戏·pygame
茶茶敲代码3 天前
Simpack的DOE处理
python·pygame·trae·simpack
小熊Coding3 天前
Python 龙与魔法回合制2D游戏
python·游戏·pygame
淘矿人7 天前
Claude辅助算法设计与优化
人工智能·python·算法·microsoft·github·bug·pygame
淘矿人9 天前
2026大模型API中转平台深度评测:weelinking领衔五大服务商横向实测与选型指南
开发语言·人工智能·python·oracle·数据挖掘·php·pygame
AC赳赳老秦10 天前
OpenClaw与系统环境冲突:Windows/Mac系统兼容问题解决指南
开发语言·python·产品经理·策略模式·pygame·deepseek·openclaw