父与子的编程---图形(pygame)
使用pygame写代码:
import pygame
pygame.init()
screen = pygame.display.set_mode([640,480]) #表示 640 像素宽、480 像素高。
#Pygame 中的显示对象(我们的显示对象 名为 screen)
试运行上面三行代码,会显示背景为黑色的弹框,且无法关闭
screen.fill([255,255,255]) #在缓冲区里画圆
pygame.draw.circle(screen,[255,0,0],[100,100],30,0) #画圆形
pygame.draw.rect(screen,[155,25,255],[320,240,200,200],0)#画矩形
#画矩形还可以写成下面格式:
my_list=[320,240,200,200]
pygame.draw.rect(screen,[155,25,255],my_list,0)
#画矩形还可以写成下面格式:
my_reect=pygame.rect(320,240,200,200)
pygame.draw.rect(screen,[155,25,255],my_rect,0)
如果用 Rect(left, top, width, height) 创建一个矩形,还可以
# [255, 0, 0]:红色
# [100, 100]:代表位置,这表示从左上角向下 100 像素再 向右 100 像素的位置)
#圆的大小(这里是 30,这是圆的半径,也就是圆心到外围边界的距离,单位是像素。)
# width = 0,圆是完全填充的,这里就采用了完全填充。)
#分辨率是 1024×768:计算机屏幕可能有 768 行像素,每行有 1024 个 像素。
pygame.display.flip()
#flip(翻转):开始动画时,我们希望让动画尽可能流畅,速 度尽可能快。所以不必在每次对图形做一个小小的修改 时都更新显示,可以做很多修改后再“翻转” (flip) 到图形的新版本。这样就会一次显示所有这些修 改,而不是一个接一个地出现。
运行下面6行代码后,弹框可正常关闭。
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.quit()
Pygame 中的颜色
Pygame 中使用的颜色系统是很多计算机语言和程序中通用的系统,称为 RGB。,通过结合或混合光的三原色(红、绿和蓝)可 以得到任何颜色, 这里的 R、G 和 B 分别代表红、绿和蓝。每个颜色(红、绿和蓝)对应一 个从 0 到 255 的数,所有数都是 0,就没有任何颜色,这就是全黑,。如 果三个数都是 255,会将 3 种颜色以最大亮度混合在一起,这就是白色,。如果颜色 是 [255, 0, 0],这就是纯红色,没有绿色和蓝色。纯绿就是 [0, 255, 0],纯蓝是 [0, 0, 255]。如果所有 3 个数都一样,比如 [150, 150,150],你会得到某种灰度。数字越小, 灰度就越深,数字越大,灰度就越浅。
【0,0,0】:黑色
【255,255,255】:白色
【255,0,0】:红色
【0,255,0】:绿色
【0,0,255】:蓝色
【155,155,155】:灰色
颜色名:Pygame 提供了一个命名颜色列表,如果你不想使用 [R, G, B] 记法,就可以使用这些 命名颜色。定义好的颜色名有 600 多个,搜索一个名为 colordict.py 的文件,然后在文本编辑器 中打开这个文件。如果你想使用这些颜色名,必须在程序最前面增加下面这行代码:
from pygame.color import THECOLORS
然后,使用某个命名颜色时,可以这样做(我们的画圆例子中就是这样做的):
pygame.draw.circle(screen, THECOLORS["red"],[100,100], 30, 0)
位置—屏幕坐标
如果想在屏幕上画个东西或者放上一个东西,需要指定这个东西应当放在屏幕 上的哪个位置。这里有两个数:一个对应 x 轴(水平方向),还有一个对应 y 轴(垂 直方向)。在 Pygame 中,这两个数从窗口左上角的 [0, 0] 坐标开始。
看到类似 [320, 240]:代表正中心, 这一对数时,要知道第一个数表示水平方向,也 就是相对于左边界的距离。第二个数表示垂直方向,也就是相对于顶边 的距离。
形状大小
使用 Pygame 的 draw 函数画形状时,必须指定形状的尺寸。对于圆来说,只有 一个尺寸,也就是半径。而像矩形之类的形状,则必须指定长和宽。
Pygame 有一种特殊的对象,名为 rect(这是“rectangle” (矩形)的简写),用 来定义矩形区域。rect 要使用左上角坐标、宽和高来定义:
Rect(left, top, width, height)
这里同时定义了位置和大小。下面是一个例子:
my_rect = Rect(250, 150, 300, 200)
如果用 Rect(left, top, width, height) 创建一个矩形,还可以使用其他一些属性来移动和对齐这个 Rect:
4条边: top, left, bottom, right
4个角:topleft, bottomleft, topright, bottomright
每条边的中点:midtop、midleft、midbottom,midright
中心:center、centerx、centery
尺寸:size、width、height
线宽
画形状时最后需要指定的一点是线的粗细。在之前的例子中,我们使用的线宽 都是 0,这会填充整个形状。如果使用不同的线宽,会看到形状的轮廓
0:全部填充
1-100:数字越大边框线条越粗

现代艺术

单个像素
画线的方法:pygame.draw.lines()
画线的表面( surface)。
颜色(color)。
是否要画一条线将最后一个点与第一个点相连接,使形状闭合( closed)。 我们不希望正弦曲线闭合,所以对我们来说,这个参数是 False。
要连接的点的列表(list)。
线宽(width)
所以,在我们的正弦曲线例子中,pygame.draw.lines() 方法是这样的:
pygame.draw.lines(screen, [0,0,0],False, plotPoints, 1)

逐点绘制
screen.set_at([x, y], [0, 0, 0])
还可以用 Surface.get_at() 方法检查一个像素设置为什么颜色。只需要传入你想要检查的那个像素的坐标,比如:pixel_color = screen.get_at([320, 240])。在这个例子中,screen 是表面的名字。
图像
还想用从 别处得来的图片、可能是数码照片、从网上下载的图片或者在图像编辑程序中创建 的图片。在 Pygame 中,使用图像最简单的方法就是利用 image 函数。

浙公网安备 33010602011771号