Python之Pygame的Draw繪圖
Pygame的Draw繪圖
Pygame 中提供了一個(gè)draw模塊用來(lái)繪制一些簡(jiǎn)單的圖形狀,比如矩形、多邊形、圓形、直線、弧線等。
pygame.draw模塊的常用方法如下表所示:
名稱 | 說(shuō)明 |
---|---|
pygame.draw.rect() | 繪制矩形 |
pygame.draw.polygon() | 繪制多邊形 |
pygame.draw.circle() | 根據(jù)圓心和半徑繪制圓形 |
pygame.draw.ellipse() | 繪制一個(gè)橢圓形 |
pygame.draw.arc() | 繪制弧線(揮著橢圓的一部分) |
pygame.draw.line() | 繪制線段(直線) |
pygame.draw.lines() | 繪制多條連續(xù)的線段 |
pygame.draw.aaline() | 繪制一條平滑的線段(抗鋸齒) |
pygame.draw.aalines() | 繪制多條連續(xù)的線段 |
表格中的函數(shù)使用方法大同小異,它們都可以在 Surface 對(duì)象上繪制一些簡(jiǎn)單的形狀,返回值是一個(gè) Rect 對(duì)象,表示實(shí)際繪制圖形的矩形區(qū)域。上述繪圖函數(shù)都提供了一個(gè) color 參數(shù),我們可以通過(guò)以下三種方式來(lái)傳遞 color 參數(shù)值:
pygame.color
對(duì)象RGB
三元組RGBA
四元組
下面通對(duì)上述一些方法的參數(shù)進(jìn)行詳細(xì)說(shuō)明:
繪制矩形
繪制矩形的語(yǔ)法格式如下:
pygame.draw.rect(surface, color, rect, width)
參數(shù)說(shuō)明如下:
surface
:指主游戲窗口,無(wú)特殊情況,一般都會(huì)繪制在主屏幕上;color
:該參數(shù)用于該圖形著色;rect
:繪制圖形的位置和尺寸大??;width
:可選參數(shù),指定邊框的寬度,默認(rèn)為 0,表示填充該矩形區(qū)域。
注意,當(dāng) width > 0 時(shí),表示線框的寬度;而 width < 0 時(shí),此時(shí)不會(huì)繪制任何圖形。
繪制多邊形
pygame.draw.polygon(surface, color, points, width)
參數(shù)說(shuō)明如下
points
: 一個(gè)列表參數(shù),它表示組成多邊形頂點(diǎn)的 3 或者多個(gè) (x,y) 坐標(biāo),通過(guò)元組或者列表來(lái)表示這些多邊形頂點(diǎn)。- 其余參數(shù)與上述函數(shù)相同。
繪制圓形
pygame.circle(surface, color, pos, radius, width=0)
參數(shù)說(shuō)明如下
pos
:該參數(shù)用來(lái)指定的圓心位置;radius
:用來(lái)指定圓的半徑;- 其余參數(shù)與上述函數(shù)相同。
繪制橢圓形
pygame.draw.ellipse(surface, color, Rect, width=0)
繪制橢圓形的過(guò)程,其實(shí)就是在矩形區(qū)域內(nèi)部(Rect)繪制一個(gè)內(nèi)接橢圓形
參數(shù)說(shuō)明如下
- 其余參數(shù)與上述函數(shù)相同。
繪制圓弧曲線
pygame.draw.arc(Surface, color, Rect, start_angle, stop_angle, width=1)
繪制橢圓形的過(guò)程,其實(shí)就是在矩形區(qū)域內(nèi)部(Rect)繪制一個(gè)內(nèi)接橢圓形
參數(shù)說(shuō)明如下
start_angle
: 是該段圓弧的起始角度;stop_angle
: 是終止角度;- 其余參數(shù)與上述函數(shù)相同。
繪制直線
pygame.draw.line(surface, color, start_pos, end_pos, width=1)
參數(shù)說(shuō)明如下
start_pos
: 是該線段的開始位置;end_pos
: 是該線段的結(jié)束位置;;- 其余參數(shù)與上述函數(shù)相同。
如果是繪制一條消除鋸齒的平滑線,此時(shí)則使用 blend = 1 參數(shù),如下所示:
pygame.aaline(surface, color, startpos, endpos, blend=1)
blend 參數(shù)表示通過(guò)繪制混合背景的陰影來(lái)實(shí)現(xiàn)抗鋸齒功能。
繪制多條直線
參數(shù)說(shuō)明如下
pointlist
: 參數(shù)值為列表,包含了一些列點(diǎn)坐標(biāo)的列表;closed
: 布爾值參數(shù),如果設(shè)置為 True,表示直線的第一個(gè)端點(diǎn)和直線的最后一個(gè)端點(diǎn)要首尾相連;;- 其余參數(shù)與上述函數(shù)相同。
如果繪制抗鋸齒直線,使用以下方法:
pygame.draw.aalines(surface, color, closed, pointlist, blend=1)
除了指定了 blend = 1 之外,其余參數(shù)含義與上述函數(shù)相同。
下面通過(guò)一組簡(jiǎn)單的示例對(duì)上述繪圖方法進(jìn)行演示:
import pygame from math import pi # 初始化 pygame.init() # 設(shè)置主屏幕大小 size = (500, 450) screen = pygame.display.set_mode(size) # 設(shè)置標(biāo)題 pygame.display.set_caption("Python自學(xué)網(wǎng)") # 設(shè)置一個(gè)控制主循環(huán)的變量 done = False # 創(chuàng)建時(shí)鐘對(duì)象 clock = pygame.time.Clock() while not done: # 設(shè)置游戲的fps clock.tick(10) for event in pygame.event.get(): if event.type == pygame.QUIT: done = True # 若檢測(cè)到關(guān)閉窗口,則將done置為True # 繪制一條寬度為 3 的紅色對(duì)角線 pygame.draw.line(screen, (0, 255, 0), [0, 0], (500, 450), 3) # 繪制多條藍(lán)色的直線(連續(xù)直線,非抗鋸齒),F(xiàn)alse 表示首尾不相連 pygame.draw.lines(screen, (0, 0, 255), False, [[0, 80], [50, 90], [200, 80], [220, 30]], 1) # 繪制一個(gè)灰色的矩形區(qū)域,以灰色填充區(qū)域 pygame.draw.rect(screen, (155, 155, 155), (75, 10, 50, 20), 0) # 繪制一個(gè)線框?qū)挾葹?的矩形區(qū)域 pygame.draw.rect(screen, (0, 0, 0), [150, 10, 50, 20], 2) # 繪制一個(gè)橢圓形,其線寬為2 pygame.draw.ellipse(screen, (255, 0, 0), (225, 10, 50, 20), 2) # 繪制一個(gè)實(shí)心的紅色橢圓形 pygame.draw.ellipse(screen, (255, 0, 0), (300, 10, 50, 20)) # 繪制一個(gè)綠色邊框(寬度為2)三角形 pygame.draw.polygon(screen, (100, 200, 45), [[100, 100], [0, 200], [200, 200]], 2) # 繪制一個(gè)藍(lán)色實(shí)心的圓形,其中[60,250]表示圓心的位置,40為半徑,width默認(rèn)為0 pygame.draw.circle(screen, (0, 0, 255), [60, 250], 40) # 繪制一個(gè)圓弧,其中0表示弧線的開始位置,pi/2表示弧線的結(jié)束位置,2表示線寬 pygame.draw.arc(screen, (255, 10, 0), (210, 75, 150, 125), 0, pi / 2, 2) # 刷新顯示屏幕 pygame.display.flip() # 點(diǎn)擊關(guān)閉,退出pygame程序 pygame.quit()
到此這篇關(guān)于Python之Pygame的Draw繪圖的文章就介紹到這了,更多相關(guān)Pygame的Draw繪圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Python的Twisted框架編寫簡(jiǎn)單的網(wǎng)絡(luò)客戶端
這篇文章主要介紹了使用Python的Twisted框架編寫簡(jiǎn)單的網(wǎng)絡(luò)客戶端,翻譯自Twisted文檔,包括一個(gè)簡(jiǎn)單的IRC客戶端的實(shí)現(xiàn),需要的朋友可以參考下2015-04-04matplotlib 使用 plt.savefig() 輸出圖片去除旁邊的空白區(qū)域
這篇文章主要介紹了matplotlib 使用 plt.savefig() 輸出圖片去除旁邊的空白區(qū)域,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01安裝Python和pygame及相應(yīng)的環(huán)境變量配置(圖文教程)
下面小編就為大家?guī)?lái)一篇安裝Python和pygame及相應(yīng)的環(huán)境變量配置(圖文教程)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06Python實(shí)現(xiàn)批量將符合要求的文件自動(dòng)復(fù)制到新文件夾
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)批量將文件名稱符合要求的文件自動(dòng)復(fù)制到新文件夾,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考下2023-10-10Pytorch?使用Google?Colab訓(xùn)練神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí)
本文以VOC數(shù)據(jù)集為例,因此在訓(xùn)練的時(shí)候沒(méi)有修改classes_path等,如果是訓(xùn)練自己的數(shù)據(jù)集,各位一定要注意修改classes_path等其它參數(shù)2022-04-04python?pytorch圖像識(shí)別基礎(chǔ)介紹
大家好,本篇文章主要講的是python?pytorch圖像識(shí)別基礎(chǔ)介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-02-02詳解利用Pytorch實(shí)現(xiàn)ResNet網(wǎng)絡(luò)之評(píng)估訓(xùn)練模型
這篇文章主要為大家介紹了利用Pytorch實(shí)現(xiàn)ResNet網(wǎng)絡(luò)之評(píng)估訓(xùn)練模型詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04