網站首頁 編程語言 正文
視頻
觀看視頻
pygame.Color
Pygame 中用于描述顏色的對象。
Color(name) -> Color
,例如:Color("gray")
Color(r, g, b, a) -> Color
,例如:Color(190, 190, 190, 255)
Color(rgbvalue) -> Color
,例如:Color("#BEBEBEFF")
w3schools顏色選擇器,選擇任何你想要的顏色,你可以在這里找到它
Pygame 使用 Color 類表示 RGBA 顏色值,每個顏色值的取值范圍是 0 ~ 255。當沒有給出 alpha 的值時,默認是 255(不透明)
“RGB值”可以是一個顏色名,一個 HTML 顏色格式的字符串,一個 16 進制數的字符串,或者一個整型像素值。HTML 格式是 #rrggbbaa
,其中 “rr”,“gg”,“bb”,“aa” 都是 2 位的 16 進制數。代表 alpha 的 “aa” 是可選的。16 進制數的字符串組成形式為 0xrrggbbaa
,當然,其中的 “aa” 也是可選的
下列程序可以列出pygame預定義的顏色
from pprint import pprint import pygame as pg pprint(pg.color.THECOLORS)
方法&屬性
pygame.Color.r
— 獲取或設置 Color 對象的紅色值
pygame.Color.g
— 獲取或設置 Color 對象的綠色值
pygame.Color.b
— 獲取或設置 Color 對象的藍色值
pygame.Color.a
— 獲取或設置 Color 對象的 alpha 值,透明度
pygame.Color.cmy
— 獲取或設置 Color 對象表示的 CMY 值
pygame.Color.hsva
— 獲取或設置 Color 對象表示的 HSVA 值
pygame.Color.hsla
— 獲取或設置 Color 對象表示的 HSLA 值
pygame.Color.i1i2i3
— 獲取或設置 Color 對象表示的 I1I2I3 值
pygame.Color.normalize()
— 返回 Color 對象的標準化 RGBA 值
pygame.Color.correct_gamma()
— 應用一定的伽馬值調整 Color 對象
pygame.Color.set_length()
— 設置 Color 對象的長度(成員數量)
示例
讓窗口的背景不斷變化
import pygame, sys pygame.init() screen_size = 640, 480 screen = pygame.display.set_mode(screen_size) pygame.display.set_caption("pygame顏色") GOLD = (255,251,0) RED = pygame.Color('red') WHITE = (255, 255, 255) GREEN = pygame.Color('green') color_list = [GOLD,RED,WHITE,GREEN] fclock = pygame.time.Clock() running = True i = 0 while running: fclock.tick(1) for e in pygame.event.get(): if e.type == pygame.QUIT: running = False i = i + 1 i = 0 if i > 3 else i screen.fill(color_list[i]) pygame.display.flip() pygame.quit()
Rect對象與Surface對象區別
pygame.Surface
表示繪制層、或繪圖平面、或圖層,用于表示圖層、文字或圖像的繪制效果,如果不繪制在主圖層上,則不會被顯示。
由pygame.display.set_mode()
生成主圖層,是一個Surface對象,在主圖層上繪制其它圖層使用blit()
方法
pygame.draw
繪制圖形后,返回一個矩形Rect類表示形狀,
pygame.Rect
表達一個矩形區域的類,Pygame利用Rect類來操作圖形、圖像、文字等信息。對應于當前主圖層的某個區域,指定圖層繪制的矩形區域。
文字的繪制
系統字體所在位置:
復制微軟雅黑到“fonts”文件夾
pygame.freetype
類:向屏幕上繪制特定字體的文字,文字不能直接用print()
, 而是用像素根據字體點陣圖繪制
pygame 包在加載時不會自動導入freetype
。必須顯式導入此模塊才能使用。
import pygame import pygame.freetype
pygame 1.9.2 中的新功能:freetype
常用的方法
1. pygame.freetype.Font
從支持的字體文件創建一個新的Font實例。
Font(file, size=0, font_index=0, resolution=0, ucs4=False) -> Font
參數:
file
可以是表示字體文件名的字符串,包含字體的類文件對象,也可以是None;如果為None,則使用默認的Pygame字體。
(可選)可以指定size參數來設置文字的默認大小,這決定了渲染字符的大小。大小也可以顯式傳遞給每個方法調用。由于緩存系統的工作方式,在構造函數上指定默認大小并不意味著在每次函數調用上手動傳遞大小都會帶來性能提升。如果字體是位圖并且沒有給出大小,則默認大小設置為字體的第一個可用大小。
2. pygame.freetype.Font.render()
將渲染文本作為surface返回
render(text, fgcolor=None, bgcolor=None, style=STYLE_DEFAULT, rotation=0, size=0) -> (Surface, Rect)
返回一個新的Surface,文本以’fgcolor’給出的顏色呈現給它。如果沒有給出前景色,則使用默認前景色fgcolor
。如果給出bgcolor
,Surface將用這種顏色填充。
返回值是一個元組:新Surface和邊界矩形給出渲染文本的大小和原點。
如果為文本傳遞空字符串,則返回的Rect為零寬度和字體高度。
3. pygame.freetype.Font.render_to() 將文本渲染到現有surface上 render_to(surf, dest, text, fgcolor=None, bgcolor=None, style=STYLE_DEFAULT, rotation=0, size=0) -> Rect
將字符串文本呈現給pygame.Surface對象,位于dest,(x,y)表面坐標對。如果x或y不是整數,則盡可能將其轉換為整數。接受前兩個項是x和y位置元素的任何序列,包括Rect實例。與render()一樣,可以選擇fgcolor,style,rotation和size參數。
def word_wrap(surf, text, font, color=(0, 0, 0)): font.origin = True words = text.split(' ') width, height = surf.get_size() line_spacing = font.get_sized_height() + 2 x, y = 0, line_spacing space = font.get_rect(' ') for word in words: bounds = font.get_rect(word) if x + bounds.width + bounds.x >= width: x, y = 0, y + line_spacing if x + bounds.width + bounds.x >= width: raise ValueError("word too wide for the surface") if y + bounds.height - bounds.y >= height: raise ValueError("text to long for the surface") font.render_to(surf, (x, y), None, color) x += bounds.width + space.width return x, y
文字版的小球游戲
import pygame, sys import pygame.freetype pygame.init() size = screen_width, screen_height = 640, 480 screen = pygame.display.set_mode(size) pygame.display.set_caption('文字游戲') BLACK = pygame.Color('black') GOLD = (255,251,0) font1 = pygame.freetype.Font("C://Windows//Fonts//msyh.ttc", 28) font_surface,font_rect = font1.render("小小工坊", fgcolor=GOLD, size=50) pos = [screen_width // 2, screen_height // 2] speed = [1,1] fps = 60 fclock = pygame.time.Clock() while True: fclock.tick(fps) for e in pygame.event.get(): if e.type == pygame.QUIT: sys.exit() if pos[0] < 0 or pos[0] + font_rect.width > screen_width: speed[0] = -speed[0] if pos[1] < 0 or pos[1] + font_rect.height > screen_height: speed[1] = -speed[1] pos[0] = pos[0] + speed[0] pos[1] = pos[1] + speed[1] screen.fill(BLACK) screen.blit(font_surface,(pos[0],pos[1])) pygame.display.update()
原文鏈接:https://acktomas.blog.csdn.net/article/details/125856545
相關推薦
- 2023-11-24 局部路由守衛component守衛
- 2022-05-21 C++?Cmake的構建靜態庫和動態庫詳解_C 語言
- 2022-09-09 python中.format()方法使用詳解_python
- 2022-06-23 Python基于鏈接表實現無向圖最短路徑搜索_python
- 2022-07-21 React生命周期
- 2022-01-28 Mybatis插件-責任鏈模式
- 2023-02-17 python引入其他py文件或模塊_python
- 2022-05-25 utf8_unicode_ci和utf8_general_ci區別
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支