Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python之pygame学习绘制基本图形(3)

Python之pygame学习绘制基本图形(3)

作者头像
萌海无涯
发布于 2019-08-14 12:27:39
发布于 2019-08-14 12:27:39
4.3K08
代码可运行
举报
文章被收录于专栏:萌海无涯萌海无涯
运行总次数:8
代码可运行

pygame绘制

这次来说下怎么绘制基本的图形,如矩形,圆,直线等等

这图片的代码在最最最下面!!

pygame.draw.rect

画一个矩形

pygame.draw.polygon

绘制一个多边形

pygame.draw.circle

画一个圆圈

pygame.draw.ellipse

绘制一个椭圆

pygame.draw.arc

画一个椭圆弧

pygame.draw.line

画一条直线

pygame.draw.lines

绘制多个连续的直线段

pygame.draw.aaline

绘制直线抗锯齿线

pygame.draw.aalines

绘制多个连续的直线抗锯齿线段

在表面绘制几个简单的形状。这些函数可用于渲染任何格式的曲面。渲染到硬件表面将比常规软件表面慢。

大多数函数使用width参数来表示形状边缘周围的笔划(粗细)大小。如果宽度为0,则将填充形状(实线)。

所有绘图功能都遵循表面的剪辑区域,并将限制在该区域。这些函数返回一个矩形,表示已更改像素的边界区域。此边界矩形是包含受影响区域的“最小”边界框。

绘制矩形

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rect(表面,颜色,矩形) - > Rect
rect(surface,color,rect,width = 0- > Rect

参数说明:

  • surface(Surface)
    • 绘制表面
  • color(Color或int 或tuple(int ,int ,int ,[ int])
    • 要绘制的颜色,使用元组(上篇讲过背景色相同),或者使用英文单词的如red之类的可用单词
  • rect(Rect) - 要绘制的矩形,位置和尺寸
    • 要绘制的矩形,位置和尺寸
  • width(int)
    • (可选)用于线条粗细或表示要填充矩形(不要与rect参数的宽度值混淆)
    • 如果 width == 0 (默认)则填充内部
    • 如果 width > 0 则表示线条粗细
    • 如果使用width,边框的宽度不是很好控制
  • 返回:一个矩形边界变化的像素,如果没有绘制任何东西,返回宽高为0代码演示:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  pygame.draw.rect(screen,clock,(20,20,50,20),1)

绘制一个多边形

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
polygon(surface,color,points) - > Rect
polygon(surface,color,points,width = 0- > Rect

参数:

  • surface(Surface)
  • 绘制表面
  • color(Color或int 或tuple(int ,int ,int ,[ int])
    • 要绘制的颜色,使用元组(r,g,b)或者英文单词red之类可用的单词
  • points(元组(坐标)或列表(坐标))
    • 构成多边形顶点的3个或更多(x,y)坐标的序列,序列中的每个坐标必须是元组/列表/
  • width(int)
    • (可选)用于线条粗细或表示要填充矩形(不要与rect参数的宽度值混淆)
    • 如果 width == 0 (默认)则填充内部是实心的内部全部填充颜色
    • 如果 width > 0 则表示线条粗细,空心的代表线条宽度
    • 如果使用width,边框的宽度不是很好控制
  • 返回:一个矩形边界变化的像素,如果没有绘制任何东西,返回宽高为0代码演示:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    # 绘制一个多边形
    pygame.draw.polygon(screen, clock, [(100, 100), (150, 100), (125,150),(100, 100)], 0)

绘制一个园

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
圆(表面,颜色,中心,半径) - >矩形

圆(表面,颜色,中心,半径,宽度= 0- >矩形

参数:

  • 表面:与矩形相同
  • 颜色:与矩形相同
  • 中心:元祖或列表指定一个点作为园的中心
  • 半径:圆的半径,半径为0则显示一个像素
  • 宽度:与矩形相同
  • 返回:与矩形相同代码:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 画一个正圆
pygame.draw.circle(screen,clock,(200,100),30)

绘制一个椭圆

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
绘制一个椭圆
椭圆(表面,颜色,矩形) - > Rect
ellipse(surface,color,rect,width = 0- > Rect

参数:

  • 表面:与矩形相同
  • 颜色:与矩形相同
  • 矩形:用于指定椭圆的位置和尺寸的矩形,矩形限制椭圆的大小
  • 宽度:与矩形相同
  • 返回:与矩形相同
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 绘制一个椭圆
pygame.draw.ellipse(screen,clock,(150,150,100,50),1)

画一个椭圆弧

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
画一个椭圆弧
arc(surface,color,rect,start_angle,stop_angle) - > Rect
arc(surface,color,rect,start_angle,stop_angle,width = 1- > Rect

参数:

  • 表面:与矩形相同
  • 颜色:与矩形相同
  • 矩形:绘制的位置和尺寸,椭圆将在矩形内居中
  • 起始角度:以弧度为单位的弧起始角度
  • 停止角度:以弧度为单位的弧的停止角度
    • 弧从哪顺时针方向绘制到结束方向
    • 起始角度小时停止角度,或超过起始角度360度后不会绘制内容
    • 如果起始起始角度等于停止则什么
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    # 画一个椭圆弧
    # 这个我没看懂!
    # 官方代码!
from math import pi
pygame.draw.arc(screen, BLACK, [210, 75, 150, 125], 0, pi / 2, 2)
pygame.draw.arc(screen, GREEN, [210, 75, 150, 125], pi / 2, pi, 2)
pygame.draw.arc(screen, BLUE, [210, 75, 150, 125], pi, 3 * pi / 2, 2)
pygame.draw.arc(screen, RED, [210, 75, 150, 125], 3 * pi / 2, 2 * pi, 2)

画一条直线

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
line(surface,color,start_pos,end_pos,width) - > Rect
line(surface,color,start_pos,end_pos,width = 1- > Rect

在给定曲面上绘制一条直线。没有端盖。对于粗线,末端是方形的。参数:

  • 表面:同矩形
  • 颜色:同矩形
  • 起始点:指定一个起始位置 元组或列表
  • 终止点:指定一个终止位置 元组或列表
  • 宽度:同矩形
  • 返回:同矩形
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# # 画一条直线pygame.draw.line(screen,clock,(100,200),(100,300))

绘制多个连续的直线段

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
线条(表面,颜色,封闭,点) - > Rect
线条(表面,颜色,闭合,点,宽度= 1- > Rect

在给定曲面上绘制一系列连续的直线。没有端盖或斜接接头。对于粗线,末端是方形的。用尖角绘制粗线会产生不希望的效果。参数:

  • 表面:同矩形
  • 颜色:同矩形
  • 封闭:是否闭合,起点与结束点
  • 点:元组,或列表绘制一个个的点,如果闭合为真,则起点与终点自动闭合
  • 宽度:同矩形返回:同矩形
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 绘制多个连续的直线段
points = [(200, 75), (300, 25), (400, 75), (450, 25), (450, 125), (400, 75), (300, 125)]
pygame.draw.lines(screen,clock,1,points,1)

绘制抗锯齿线段

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
aaline(surface,color,start_pos,end_pos) - > Rect
aaline(surface,color,start_pos,end_pos,blend = 1- > Rect

在给定曲面上绘制直线抗锯齿线。所有参数同绘制直线

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 绘制直线抗锯齿线
pygame.draw.aaline(screen,clock,(300,300),(500,500))

绘制多个连续的直线抗锯齿线段

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
aalines(表面,颜色,封闭,点) - > Rect
aalines(surface,color,closed,points,blend = 1- > Rect

在给定曲面上绘制一系列连续的直线抗锯齿线所有参数同绘制多个连续的直线段

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 绘制多个连续的直线抗锯齿线段
points1= [(500, 75), (600, 25), (700, 75), (750, 25), (750, 125), (700, 75), (600, 125)]
pygame.draw.aalines(screen,clock,1,points1)

我测试的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pygamefrom math import pi
def rungame():    # 分辨率 800 * 600    win = (800, 600)


    # 一般情况我们都只是设置一个固定大小的窗口    screen = pygame.display.set_mode(win)    # 设置当前窗口标题    pygame.display.set_caption('绘制基础图像!')    # 设置窗口的背景色    screen.fill((0, 0, 0))    clock = (255,255,255)    # 绘制矩形    # 显示窗口,(颜色),(左,顶,宽,高)    pygame.draw.rect(screen,clock,(20,20,50,20),1)    # 或者((左,上),(宽,高))    pygame.draw.rect(screen,clock,((40,60),(20,20)),0)    # 绘制一个多边形    pygame.draw.polygon(screen, clock, [(100, 100), (150, 100), (125,150),(100, 100)], 0)    # 画一个圆圈    pygame.draw.circle(screen,clock,(200,100),30)    # 绘制一个椭圆    pygame.draw.ellipse(screen,clock,(150,150,100,50),1)    # 画一个椭圆弧    # pygame.draw.arc(screen,clock,(580,700,100,300),0,2 / pi,3)    # 画一条直线    pygame.draw.line(screen,clock,(100,200),(100,300))    # # 绘制多个连续的直线段    points = [(200, 75), (300, 25), (400, 75), (450, 25), (450, 125), (400, 75), (300, 125)]    pygame.draw.lines(screen,clock,1,points,1)    # 绘制直线抗锯齿线    pygame.draw.aaline(screen,clock,(300,300),(500,500))    # 绘制多个连续的直线抗锯齿线段    points1= [(500, 75), (600, 25), (700, 75), (750, 25), (750, 125), (700, 75), (600, 125)]    pygame.draw.aalines(screen,clock,1,points1)    # 开启一个事件循环处理发生的事件    while True:        #clock.tick(60)        # 从消息队列中获取事件并对事件进行处理        for event in pygame.event.get():            if event.type == pygame.QUIT:                pygame.quit()                exit(0)        # 重绘背景

        pygame.display.update()

def main():    # 初始化导入的pygame中的模块    pygame.init()    rungame()

if __name__ == "__main__":    main()

官方给的演示代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Import a library of functions called 'pygame'import pygamefrom math import pi
# Initialize the game enginepygame.init()
# Define the colors we will use in RGB formatBLACK = (0, 0, 0)WHITE = (255, 255, 255)BLUE = (0, 0, 255)GREEN = (0, 255, 0)RED = (255, 0, 0)
# Set the height and width of the screensize = [400, 300]screen = pygame.display.set_mode(size)
pygame.display.set_caption("Example code for the draw module")
# Loop until the user clicks the close button.done = Falseclock = pygame.time.Clock()
while not done:
    # This limits the while loop to a max of 10 times per second.    # Leave this out and we will use all CPU we can.    clock.tick(10)
    for event in pygame.event.get():  # User did something        if event.type == pygame.QUIT:  # If user clicked close            done = True  # Flag that we are done so we exit this loop
    # All drawing code happens after the for loop and but    # inside the main while done==False loop.
    # Clear the screen and set the screen background    screen.fill(WHITE)
    # Draw on the screen a GREEN line from (0,0) to (50.75)    # 5 pixels wide.    pygame.draw.line(screen, GREEN, [0, 0], [50, 30], 5)
    # Draw on the screen a GREEN line from (0,0) to (50.75)    # 5 pixels wide.    pygame.draw.lines(screen, BLACK, False, [[0, 80], [50, 90], [200, 80], [220, 30]], 5)
    # Draw on the screen a GREEN line from (0,0) to (50.75)    # 5 pixels wide.    pygame.draw.aaline(screen, GREEN, [0, 50], [50, 80], True)
    # Draw a rectangle outline    pygame.draw.rect(screen, BLACK, [75, 10, 50, 20], 2)
    # Draw a solid rectangle    pygame.draw.rect(screen, BLACK, [150, 10, 50, 20])
    # Draw an ellipse outline, using a rectangle as the outside boundaries    pygame.draw.ellipse(screen, RED, [225, 10, 50, 20], 2)
    # Draw an solid ellipse, using a rectangle as the outside boundaries    pygame.draw.ellipse(screen, RED, [300, 10, 50, 20])
    # This draws a triangle using the polygon command    pygame.draw.polygon(screen, BLACK, [[100, 100], [0, 200], [200, 200]], 5)
    # Draw an arc as part of an ellipse.    # Use radians to determine what angle to draw.    pygame.draw.arc(screen, BLACK, [210, 75, 150, 125], 0, pi / 2, 2)    pygame.draw.arc(screen, GREEN, [210, 75, 150, 125], pi / 2, pi, 2)    pygame.draw.arc(screen, BLUE, [210, 75, 150, 125], pi, 3 * pi / 2, 2)    pygame.draw.arc(screen, RED, [210, 75, 150, 125], 3 * pi / 2, 2 * pi, 2)
    # Draw a circle    pygame.draw.circle(screen, BLUE, [60, 250], 40)
    # Go ahead and update the screen with what we've drawn.    # This MUST happen after all the other drawing commands.    pygame.display.flip()
# Be IDLE friendlypygame.quit()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 萌海无涯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
pygame-游戏开发学习笔记(七)–pygame.draw,画图。
pygame.draw中函数的第一个参数总是一个surface,然后是颜色,再后会是一系列的坐标等。稍有些计算机绘图经验的人就会知道,计算机里的坐标,(0,0)代表左上角。而返回值是一个Rect对象,包含了绘制的领域,这样你就可以很方便的更新那个部分了。
十四君
2019/11/23
2.1K0
pygame-游戏开发学习笔记(七)–pygame.draw,画图。
Python:pygame的初步使用(pygame.draw)(二)
pygame.draw # -*- coding:utf-8 -*- import pygame,math from pygame.locals import * import sys pygame.init() screen = pygame.display.set_mode((480,853),pygame.RESIZABLE,0) pygame.display.set_caption("Python.pygame学习(二)绘制图形"); blue = 0,0,200 color = 255,255
菜菜不吃蔡
2018/08/03
1.2K0
Easy Games With Python and Pygame(二)- Pygame 绘制图形
pygame.draw可以用来绘制不同的形状,pygame.draw.cirle()可以用来绘制圆
RiemannHypothesis
2022/09/26
1.2K0
Easy Games With Python and Pygame(二)- Pygame 绘制图形
【python游戏编程之旅】第一篇---初识pygame
本系列博客介绍以python+pygame库进行小游戏的开发。有写的不对之处还望各位海涵。
马三小伙儿
2018/09/12
1K0
【python游戏编程之旅】第一篇---初识pygame
pygame游戏常用方法
python做2d游戏,用的最多的就是pygame库,虽然比较老了,但是非常经典。尽管现在有很多其它游戏的库,可是都封装的比较多了,很多非常重要的细节都被隐藏了。
叶子陪你玩
2020/09/28
1K0
pygame游戏常用方法
python学习之GUI(pygame)
画一个圆形 FFFFFF是白色,000000是黑色 import pygame pygame.init() windowSize=[400,300] screen=pygame.display.set_mode(windowSize) pygame.display.set_caption("CircleGame") colour=pygame.color.Color("#FFFFFF") done=False while not done:     pygame.draw.circle(screen
py3study
2020/01/06
8520
pygame系列_draw游戏画图
=================================================
Hongten
2018/09/13
9230
pygame系列_draw游戏画图
Easy Games With Python and Pygame(一)- Pygame Quickstart
Pygame 是一个可以用于编写游戏的Python第三方模块,可以使用Pygame在基于Python语言的基础上开发出功能齐全的多媒体程序或者游戏。
RiemannHypothesis
2022/09/26
1.3K0
Easy Games With Python and Pygame(一)- Pygame Quickstart
小游戏系列之五环盾牌
本节主要介绍pygame的初级教程,以及如何用pygame去绘制奥运五环及美国队长盾牌。
公众号guangcity
2019/09/20
8660
小游戏系列之五环盾牌
Python之pygame学习绘制文字制作滚动文字(6)
blit(source,dest,area = None,special_flags = 0) - > Rect
萌海无涯
2019/08/19
4.1K0
SVG基本图形[通俗易懂]
cx和cy属性定义圆点的x和y坐标,如果省略cx和cy,圆的中心会被设置为(0,0);r定义半径;
全栈程序员站长
2022/09/20
9010
SVG基本图形[通俗易懂]
520最浪漫表白:QQ打开基于Python实现的无法拒绝的音乐表白代码!别让等待,成了遗憾!
每个女孩都喜欢男孩对自己浪漫的表白,不过每个人性格不同,浪漫表白的方式也不尽相同。那么520怎样浪漫的表白好呢?程序员如何俘获心仪女神的心呢?当然是要用程序员的方法了! 在2020年5月20日到来之际,作为一个爱看抖音的纯小白的我也要跟跟风:用Python语言实现无法拒绝的音乐表白代码并用QQ图标方式打开!有想法的小伙伴们快快拿去向心爱的TA表白爱意吧!
荣仔_最靓的仔
2021/02/02
4.4K0
520最浪漫表白:QQ打开基于Python实现的无法拒绝的音乐表白代码!别让等待,成了遗憾!
使用Python绘制彩虹效果:动态彩虹动画
彩虹是自然界中最美丽的现象之一。通过编程,我们可以将这一奇妙的景象带到屏幕上。在这篇博客中,我们将使用Python来创建一个动态的彩虹动画。利用Pygame库,我们可以实现一个不断变化的彩虹效果,让你的屏幕充满色彩。
屿小夏
2025/05/23
540
PyGame:Python 游戏编程入门-1
pygame是SDL 库的 Python 包装器,它代表Simple DirectMedia 层。SDL 提供对系统底层多媒体硬件组件(例如声音、视频、鼠标、键盘和操纵杆)的跨平台访问。作为停滞不前的PySDL 项目pygame的替代品开始了生活。SDL 的跨平台特性意味着您可以为支持它们的每个平台编写游戏和丰富的多媒体 Python 程序!pygame
苏州程序大白
2022/09/16
2.5K0
PyGame:Python 游戏编程入门-1
使用 Python 和 Pygame 制作游戏:第一章到第五章
在阅读本书之前,如果您了解一些 Python 编程知识(或者知道如何使用 Python 之外的其他语言进行编程),可能会有所帮助;但是即使您没有,您仍然可以阅读本书。编程并不像人们想象的那么难。如果您遇到问题,可以在线阅读免费书籍“使用 Python 发明自己的电脑游戏”http://inventwithpython.com,或者在 Invent with Python 维基 http://inventwithpython.com/wiki 上查找您觉得困惑的主题。
ApacheCN_飞龙
2024/01/15
1.6K0
使用 Python 和 Pygame 制作游戏:第一章到第五章
【教程】超好看!Python制作桌面时钟屏保
有一个空闲的jetson和13.3寸的屏幕,闲着也是闲着,拿来显示时钟好了(非jetson也可以用哦~)。浏览器显示在线时钟的方式直接占用80%的CPU,所以为了降低资源占用所以用Python写了个。
小锋学长生活大爆炸
2024/05/25
2700
【教程】超好看!Python制作桌面时钟屏保
OpenCV-Python学习(11)—— OpenCV 图像几何形状绘制(cv.line、cv.circle、cv.rectangle、cv.ellipse)
1. 学习目标 学会使用 cv.line 绘制一条线; 学会使用 cv.circle 绘制圆; 学会使用 cv.rectangle 绘矩形; 学会使用 cv.ellipse 绘椭圆。 2. 图像公共参数说明 2.1 参数说明 参数 说明 img 表示输入图像,允许单通道灰度图像或多通道彩色图像。 color 表示绘制直线的颜色,(b,g,r) 格式的元组,或者表示灰度值的标量。 thickness 表示绘制直线的粗细,默认值 1px,-1 表示内部填充。 lineType 表示绘制直线的线性,默认为 LIN
Rattenking
2022/11/07
2.5K0
OpenCV-Python学习(11)—— OpenCV 图像几何形状绘制(cv.line、cv.circle、cv.rectangle、cv.ellipse)
Python游戏编程(Pygame)
创建一个游戏窗口,然后在窗口内创建一个小球。以一定的速度移动小球,当小球碰到游戏窗口的边缘时,小球弹回,继续运动按照如下步骤实现该功能:
全栈程序员站长
2022/06/25
2.7K0
Python游戏编程(Pygame)
使用Pygame做一个乒乓球游戏
视频地址-YT[1] 视频搬运-B站[2] 视频教程约90分钟。 代码地址[3]
一只大鸽子
2024/03/25
1960
使用Pygame做一个乒乓球游戏
鸿蒙元服务实战-笑笑五子棋(2)
Canvas提供画布组件,用于自定义绘制图形,开发者使用 CanvasRenderingContext2D 对象和 OffscreenCanvasRenderingContext2D
万少
2025/02/08
1700
鸿蒙元服务实战-笑笑五子棋(2)
推荐阅读
相关推荐
pygame-游戏开发学习笔记(七)–pygame.draw,画图。
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验