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真正地出现在用户的显示器上
绘制各种图形
最新推荐文章于 2025-08-08 08:46:02 发布