Pygame Surface创建图�
Surface=pygame.Surface(size=(width,height),flags,depth)�数函数如下:
- size:表示 Surface 对象的矩形区域大�;
- flagsï¼šåŠŸèƒ½æ ‡å¿—ä½�,有两个å�¯é€‰å�‚数值 HWSURFACE å’Œ SPCALPHA,å‰�者代表将创建的 Surface å¯¹è±¡å˜æ”¾äºŽæ˜¾å˜ä¸ï¼Œå�Žè€…表示让图åƒ�çš„æ¯�一个åƒ�ç´ éƒ½åŒ…å�«ä¸€ä¸ª alpha 通é�“
- depth:指定åƒ�ç´ çš„é¢œè‰²æ·±åº¦ï¼Œé»˜è®¤ä¸ºè‡ªé€‚åº”æ¨¡å¼�,由 Pygame 自动调节。
下�看一组简�的使用示例,如下所示:
import sys
import pygame
#使用pygame之�必须�始化
pygame.init()
#设置主å±�窗å�£ ;设置全å±�æ ¼å¼�:flags=pygame.FULLSCREEN
screen = pygame.display.set_mode((400,400))
#设置窗å�£æ ‡é¢˜
pygame.display.set_caption('cè¯è¨€ä¸æ–‡ç½‘')
screen.fill('white')
#创建一个 50*50 的图�,并优化显示
face = pygame.Surface((50,50),flags=pygame.HWSURFACE)
#填充颜色
face.fill(color='pink')
while True:
# 循环获�事件,监�事件
for event in pygame.event.get():
# 判æ–用户是å�¦ç‚¹äº†å…³é—按钮
if event.type == pygame.QUIT:
#�载所有模�
pygame.quit()
#终æ¢ç¨‹åº�
sys.exit()
# 将绘制的图åƒ�æ·»åŠ åˆ°ä¸»å±�幕上,(100,100)是ä½�ç½®å��æ ‡ï¼Œæ˜¾ç¤ºå±�的左上角为å��æ ‡ç³»çš„(0,0)原点
screen.blit(face, (100, 100))
pygame.display.flip() #更新�幕内容
最终的显示结果如下:
图1:程��行结果
从上述è¿�行结果å�¯ä»¥çœ‹å‡ºï¼Œé€šè¿‡ Surface 模å�—,我们æˆ�功的在主å±�幕上绘制一个 50 * 50 的矩形区域。注æ„�,如果ä¸�设置尺寸,Surface 默认创建一个和主游æˆ�å±�幕å�Œæ ·å¤§å°�的区域。
Surface 模�还�供了处�图�的其他方法,下表对它们�了简�的介�。
| 方法 | 说明 |
|---|---|
| pygame.Surface.blit() | 将一个图�(Surface 对象)绘制到�一个图�上 |
| pygame.Surface.convert() | 修改图åƒ�(Surface 对象)的åƒ�ç´ æ ¼å¼� |
| pygame.Surface.fill() | 使用纯色填充 Surface 对象 |
| pygame.Surface.scroll() | �制并移动 Surface 对象 |
| pygame.Surface.set_alpha() | 设置整个图�的�明度 |
| pygame.Surface.get_at() | 获å�–一个åƒ�ç´ çš„é¢œè‰²å€¼ |
| pygame.Surface.set_at() | 设置一个åƒ�ç´ çš„é¢œè‰²å€¼ |
| pygame.Surface.get_palette() | 获� Surface 对象 8 �索引的调色� |
| pygame.Surface.map_rgb() | 将一个 RGBA 颜色转æ�¢ä¸ºæ˜ 射的颜色值 |
| pygame.Surface.set_clip() | 设置该 Surface 对象的当�剪切区域 |
| pygame.Surface.subsurface() | æ ¹æ�®çˆ¶å¯¹è±¡åˆ›å»ºä¸€ä¸ªæ–°çš„å� Surface 对象 |
| pygame.Surface.get_offset() | 获å�–å� Surface 对象在父对象ä¸çš„å��ç§»ä½�ç½® |
| pygame.Surface.get_size() | 获� Surface 对象的尺寸 |
除了使用 Surface 模å�—新建图åƒ�外,我们还å�¯ä»¥ä½¿ç”¨å�¦å¤–一ç§�æ–¹æ³•ä»Žå¤–éƒ¨åŠ è½½å›¾åƒ�,如下所示:
pygame.image.load("图片路径").convert()
ä¸Šè¿°æ–¹æ³•å°†è¢«åŠ è½½çš„å›¾åƒ�作为 Surface 对象æ�¥ä½¿ç”¨ï¼Œå› æ¤å®ƒå�¯ä»¥è°ƒç”¨ä¸Šè¿°è¡¨æ ¼ä¸æ‰€æœ‰æ–¹æ³•。注æ„�,æ¤å¤„之所以使用 convert()æ�¥è½¬æ�¢è¢«åŠ è½½å›¾ç‰‡çš„åƒ�ç´ æ ¼å¼�,是为了æ��å�‡ Pygame 对图片的处ç�†é€Ÿåº¦ï¼Œè¯¥æ“�作能够ä¿�è¯�图åƒ�çš„åƒ�ç´ æ ¼å¼�ä¸Žå›¾ç‰‡çš„æ˜¾ç¤ºæ ¼å¼�是相å�Œçš„。
通过 image.load() 方法å�¯ä»¥åŠ è½½æ¸¸æˆ�的背景图,或者游æˆ�ä¸ä½¿ç”¨çš„å…¶ä»–å…ƒç´ ï¼Œæ¯”å¦‚çš„äººç‰©ã€�é�“å…·ç‰ç‰ã€‚
下�看一组简�的示例:
import pygame
#引入pygame䏿‰€æœ‰å¸¸é‡�,比如 QUIT
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((500,250))
pygame.display.set_caption('cè¯è¨€ä¸æ–‡ç½‘')
#åŠ è½½ä¸€å¼ å›¾ç‰‡
image_surface = pygame.image.load("C:/Users/Administrator/Desktop/c-net.png").convert()
# rect(left,top,width,height)指定图片上�个区域
# special_flagsåŠŸèƒ½æ ‡å¿—ä½�,指定颜色混å�ˆæ¨¡å¼�,默认为 0 表示用纯色填充
image_surface.fill((0,0,255),rect=(100,100,100,50),special_flags=0)
# 200,100 表示图åƒ�在水平ã€�垂直方å�‘上的å��ç§»é‡�,以左上角为å��æ ‡åŽŸç‚¹
image_surface.scroll(100,50)
# æ— é™�循环,让窗å�£å�œç•™
while True:
for event in pygame.event.get():
if event.type == QUIT:
exit()
# 将图�放置在主�幕上
screen.blit(image_surface,(0,0))
pygame.display.update()
程��行结果如下所示:
图2:程��行结果
关注公众å�·ã€Œç«™é•¿ä¸¥é•¿ç”Ÿã€�,在手机上阅读所有教程,éš�æ—¶éš�地都能å¦ä¹ 。本公众å�·ç”±Cè¯è¨€ä¸æ–‡ç½‘站长亲自è¿�è�¥ï¼Œé•¿æœŸæ›´æ–°ï¼Œå�šæŒ�原创。

微信扫ç �关注公众å�·
优秀文ç«
- Cè¯è¨€ä¸çš„æ£è´Ÿæ•°å�Šå…¶è¾“出
- Cè¯è¨€å¸¦å�‚å®�定义和函数的区别
- UE4设置默认游�模�和关�
- 认识一下Qt用到的开�工具
- Python内置函数一览表
- go generate命令——在编译å‰�自动化生æˆ�æŸ�类代ç �
- GDB print命令更高级的用法�
- NumPy和Matplotlib绘图
- HTML段è�½æ ‡ç¾<p>
- æ›�光一下å—节跳动的工资待é�‡å’Œè�Œä½�级别