~欢迎进来我的博客~蛋叔的小乖乖~

父与子的编程---图形(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 函数。

 

posted @ 2019-12-26 23:55  qq的天马行空  阅读(432)  评论(0)    收藏  举报
蛋叔的小乖乖