基本的绘制函数(Pygame)

开门见山 

import pygame,sys
from pygame.locals import*
pygame.init()
#set up the window
DISPLAYSURF=pygame.display.set_mode((500,400),0,32)
pygame.display.set_caption('Drawing')
 
#set up the colors
BLACK=(0,0,0)
WHITE=(255,255,255)
RED=(255,0,0)
GREEN=(0,255,0)
BLUE=(0,0,255)

#draw on the surface object
DISPLAYSURF.fill(WHITE)
pygame.draw.polygon(DISPLAYSURF,GREEN,((146,0),(291,106),(236,277),(56,277),(0,106)))
pygame.draw.line(DISPLAYSURF,BLUE,(60,60),(120,60),4)
pygame.draw.line(DISPLAYSURF,BLUE,(120,60),(60,120))
pygame.draw.line(DISPLAYSURF,BLUE,(60,120),(120,120),4)
pygame.draw.circle(DISPLAYSURF,BLUE,(300,50),20,0)
pygame.draw.ellipse(DISPLAYSURF,RED,(300,250,40,80),1)
pygame.draw.rect(DISPLAYSURF,RED,(200,150,100,50))
pixObj=pygame.PixelArray(DISPLAYSURF)
pixObj[480][380]=BLACK
pixObj[482][382]=BLACK
pixObj[484][384]=BLACK
pixObj[486][386]=BLACK
pixObj[488][388]=BLACK
del pixObj

#run the game loop
while True:
    for event in pygame.event.get():
        if event.type==QUIT:
            pygame.quit()
            sys.exit()
        pygame.display.update()

            

绘制图元:所绘制出的图案包括 矩形,圆形,椭圆形,线条,单个的像素。

绘制函数是根据它们所绘制的形状来命名的。传递给这些函数的参数,则告诉它们,在哪一个Surface对象上绘制,将形状绘制到何处(以及形状大小是多少),用什么颜色绘制,以及使用的线条的宽度是多少。

 

fill(color)

fill()方法不是一个函数,而是pygame.Surface对象的一个方法,它将会用传递给color参数的任何颜色来填充整个Surface对象。

 

pygame.draw.polygon(surface,color,pointlist,width)

多边形是由多个扁平的边所组成的形状。Surface和color参数告诉函数,将多边形绘制到哪一个Surface对象上,以及用什么颜色绘制。

 

pointlist参数是一个元组或者点的列表。

width参数是可选的。如果漏掉这个参数,多边形将会绘制为填充的,及用颜色来填充,而,如果设置为整数,e.g1,4,10,则会绘制出多边形的边框。其实相比于width,或者thickness描绘此参数better。

 

pygame.draw.line(surface,color,start_point,end_point,width)

绘制从start_point到end_point的一条直线。

 

pygame.draw.lline(surface,color,closed,pointlist,width)

绘制一个点到下一个点的系列的线条,这和pygame.draw.polygon()函数非常相似。唯一区别在于,如果你给closed参数传递了False,将不会有从pointlist中的最后一点到第一个点的那条直线了。True,则绘制从最后一个点到第一个点的直线。

 

pygame.draw.circle(surface,color,center_point,radius,width)

绘制一个圆。center_point指定了圆的圆心。radius,指定了圆的大小。

 

pygame.draw.ellipse(surface,color,bounding_rectangle,width)

绘制一个椭圆形,必须指定椭圆的边界矩形(围绕该椭圆所能绘制的最小的矩形)。

 

pygame.draw.rect(surface,color,rectangle_tuple,width)

绘制一个矩形,rectangle_tuple是整数的一个元组,或者可以传递一个pygame.Rect对象来代替。

 

pygame.PixelArray对象

创建该对象,将会锁定该Surface对象,当Surface对象锁定时,仍能够绘制函数,但是 不能使用blit()方法在其上绘制诸如PNG或JPG的图像。查看是否锁定可以用get_locked()方法,若锁定了,则返回True。pixObj[480][380]=BLACK将会把X坐标为480,Y坐标为380的点设置成黑色。告诉Pygame已经完成单个像素的绘制,用一条del语句删掉PixelArray对象,以便可以再次在其上绘制图像,否则,会尝试将下一幅图像复制,即绘制到Surface上的时候,程序会出现:"pygame.error:Surfaces must not be locked during blit"。

pygame.display.update()函数

显示Surface真正地出现在用户的显示器上。这是通过调用pygame.display.set_mode()而返回的Surface对象,出现在屏幕上,但是其他的Surface对象必须使用blit()方法。

结果:

 

参考书:《python和pygame游戏开发指南》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值