绘制各种图形

本文介绍如何使用Python的Pygame库进行基本图形绘制,包括多边形、线条、圆形、椭圆和矩形等,同时展示了如何通过PixelArray对象设置单个像素的颜色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import pygame,sys
from pygame.locals import *

pygame.init()
DISPLAYSURF=pygame.display.set_mode((1000,800),0,32) 
pygame.display.set_caption("Drawing")

BLACK=(0,0,0)
WHITE=(255,255,255)
RED=(255,0,0)
GREEN=(0,255,0)
BLUE=(0,0,255)

DISPLAYSURF.fill(WHITE)
#fill()是pygame.苏醒的Surface对象的方法
#用颜色填充整个Surface对象

pygame.draw.polygon(DISPLAYSURF,GREEN,((146,0),(291,106),(236,277),(56,277),(0,106)),0)
#pygame.draw.polygon(DISPLAYSURF,GREEN,((1,10),(200,20),(30,30),(400,40),(50,50),(60,60),(7,70),(300,80)),0) 测试功能
#polygon:多边形
#pygame.draw.polygon(Surface对象,color,点(两个整数的元组)的元组,【线的宽度】)
#参数Surface对象表示在哪个Surface对象上绘制
#多边形是这样绘制的:在第一个点和第二个点之间画线,然后在第二个点和第三个点之间画线...
#最后在最后的点和第一个点之间画线
#线的宽度这个参数是可选的,默认为将图像全部填充为指定颜色
#线的宽度为0表示全部填充,为1会画很细的线

#注意!所有pygame.draw.绘制函数()的最后都有可选的【线的宽度】的参数,并且他们的工作方式都一样


pygame.draw.lines(DISPLAYSURF,BLACK,False,((446,0),(591,106),(536,277),(356,277),(300,106)))
pygame.draw.lines(DISPLAYSURF,GREEN,True,((346,300),(491,406),(436,577),(256,577),(200,406)))
#这个函数和polygon函数特别像,唯一的区别就是多了个True或False参数,当为True表示绘制最后一个点和第一个点之间的线
#当为False表示不绘制最后一个点和第一个点之间的线
#pygame.draw.lines(Surface对象,颜色,True或False,点(两个整数的元组)的元组,[线的宽度])

pygame.draw.line(DISPLAYSURF,BLUE,(60,60),(120,60),1)
pygame.draw.line(DISPLAYSURF,BLUE,(120,60),(60,120),2)
pygame.draw.line(DISPLAYSURF,BLUE,(60,120),(120,120),3)
#pygame.draw.line(Surface对象,颜色,开始点,结束点,【线的宽度】)


pygame.draw.circle(DISPLAYSURF,BLUE,(300,50),20,0)
#circle:圆
#pygame.draw.circle(Surface对象,color,圆心,半径,[线的宽度])
#半径:整型...大概是因为单位是像素,1像素是屏幕的最小单元...不能再分割


pygame.draw.ellipse(DISPLAYSURF,RED,(300,250,40,80),1)#ellipse:椭圆
#ellipse:椭圆
#pygame.draw.ellipse(Surface对象,color,放有四个整数的元组,[线的宽度])
#关于四个整数的元组(300,250,40,80):  300,250 表示左上角点的坐标,40表示宽度,80表示高度
#四个整数的元组可以确定一个矩形,关于如何以矩形标准绘制椭圆会在后面放一个图解释清楚

pygame.draw.rect(DISPLAYSURF,RED,(200,150,100,50))
#rect:矩形
#pygame.draw.rect(Surface对象,color,放有四个整数的元组,[线的宽度])
#关于四个整数的元组(200,150,100,50):  200,150表示左上角的坐标 100表示矩形的宽度 200表示高度

pixObj=pygame.PixelArray(DISPLAYSURF)
#pygame.draw模块没有特定函数绘制单个像素的颜色,除非使用相同的起点和重点调用pygame.draw.line()
#pygame.PixelArray(Surface对象)创建pygame.PixelArray对象,并锁定该Surface对象
#当一个Surface对象被锁定的时候,仍然能在其上调用pygame.draw.绘制函数()
#但是不能够使用blit()方法在其上绘制注入.png或.jpg这样的图像
#查看一个Surface对象是否被锁定:使用get_locked()方法,锁定将返回True


pixObj[480][380]=BLACK  
#用两个索引来设置像素
#表示将横坐标为480 纵坐标为380的点设置为黑色

pixObj[482][382]=BLACK
pixObj[484][384]=BLACK
pixObj[486][386]=BLACK
pixObj[488][388]=BLACK

del pixObj
#删除pixelArray对象:解锁,以便可以再次在Surface对象上绘制.jpg这样的图像、

while True:
    for event in pygame.event.get():
        if event.type ==QUIT:
            pygame.quit()
            sys.exit()
    pygame.display.update()
    #在调用了pygame.draw.绘制函数及使用pixelArray对象让Surface对象看上去是你想要的方式之后,
    #必须调用pygame.display.update()让Surface真正地出现在用户的显示器上

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值