日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pygame Draw绘图函数详解

發布時間:2023/12/16 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pygame Draw绘图函数详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Pygame Draw繪圖函數詳解

Pygame 中提供了一個draw模塊用來繪制一些簡單的圖形狀,比如矩形、多邊形、圓形、直線、弧線等。

pygame.draw模塊的常用方法如下表所示:

方法 說明

pygame.draw.rect() 繪制矩形

pygame.draw.polygon() 繪制多邊形

pygame.draw.circle() 根據圓心和半徑繪制圓形

pygame.draw.ellipse() 繪制一個橢圓形

pygame.draw.arc() 繪制弧線(揮著橢圓的一部分)

pygame.draw.line() 繪制線段(直線)

pygame.draw.lines() 繪制多條連續的線段

pygame.draw.aaline() 繪制一條平滑的線段(抗鋸齒)

pygame.draw.aalines() 繪制多條連續的線段

表格中的函數使用方法大同小異,它們都可以在 Surface 對象上繪制一些簡單的形狀,返回值是一個 Rect 對象,表示實際繪制圖形的矩形區域。上述繪圖函數都提供了一個 color 參數,我們可以通過以下三種方式來傳遞 color 參數值:

使用 pygame.color 對象

RGB 三元組

RGBA 四元組

下面通對上述一些方法的參數進行詳細說明:

1) 繪制矩形

繪制矩形的語法格式如下:

pygame.draw.rect(surface, color, rect, width)

參數說明如下:

surface:指主游戲窗口,無特殊情況,一般都會繪制在主屏幕上; color:該參數用于該圖形著色; rect:繪制圖形的位置和尺寸大小;
width:可選參數,指定邊框的寬度,默認為 0,表示填充該矩形區域。

注意,當 width > 0 時,表示線框的寬度;而 width < 0 時,此時不會繪制任何圖形。

2) 繪制多邊形

pygame.draw.polygon(surface, color, points, width)

其中 points 一個列表參數,它表示組成多邊形頂點的 3 或者多個 (x,y) 坐標,通過元組或者列表來表示這些多邊形頂點。其余參數與上述函數相同。

3) 繪制圓形

pygame.circle(surface, color, pos, radius, width=0)

上述參數的含義如下:

pos:該參數用來指定的圓心位置;
radius:用來指定圓的半徑;

4) 繪制橢圓形

pygame.draw.ellipse(surface, color, Rect, width=0)

繪制橢圓形的過程,其實就是在矩形區域內部(Rect)繪制一個內接橢圓形,其余參數與上述參數意思相同。

5) 繪制圓弧曲線

當需要繪制圓弧的曲線時,使用以下函數,語法格式如下:

pygame.draw.arc(Surface, color, Rect, start_angle, stop_angle, width=1)

與 ellipse 函數相比,該函數多了兩個參數:
start_angle是該段圓弧的起始角度;
stop_angle是終止角度;

這兩個都是用弧度制來表示的,而原點就是矩形 Rect 的中心位置。

6) 繪制直線

Draw 模塊提供了兩類繪制直線的方法,即是否消除直線的鋸齒,并且根據實際情況,我們還可以選擇繪制一條或者多條直線。

pygame.draw.line(surface, color, start_pos, end_pos, width=1)

參數說明:

start_pos 和 end_pos 表示線段的起始位置,此處使用 [x,y] 來表示起始位置;
width =1 表示直線的寬度,默認為1。

如果是繪制一條消除鋸齒的平滑線,此時則使用 blend = 1 參數,如下所示:

pygame.aaline(surface, color, startpos, endpos, blend=1)

blend 參數表示通過繪制混合背景的陰影來實現抗鋸齒功能。

7) 繪制多條直接

當需要繪制多條直線的時候,我們可以使用以下方法:

pygame.lines(surface, color, closed, pointlist, width=1)

其中 pointlist 與 closed 含義如下:

pointlist:參數值為列表,包含了一些列點坐標的列表
closed:布爾值參數,如果設置為
True,表示直線的第一個端點和直線的最后一個端點要首尾相連;

如果繪制抗鋸齒直線,使用以下方法:

pygame.draw.aalines(surface, color, closed, pointlist, blend=1)

除了指定了 blend = 1 之外,其余參數含義與上述函數相同。

下面通過一組簡單的示例對上述繪圖方法進行演示:

import pygame from math import pi #初始化 pygame.init() # 設置主屏幕大小 size = (500, 450) screen = pygame.display.set_mode(size) #設置標題 pygame.display.set_caption("C語言") # 設置一個控制主循環的變量 done = False #創建時鐘對象 clock = pygame.time.Clock() while not done:# 設置游戲的fpsclock.tick(10)for event in pygame.event.get():if event.type == pygame.QUIT:done = True # 若檢測到關閉窗口,則將done置為True# 繪制一條寬度為 3 的紅色對角線pygame.draw.line(screen, (0, 255, 0), [0, 0], (500, 450), 3)# 繪制多條藍色的直線(連續直線,非抗鋸齒),False 表示首尾不相連pygame.draw.lines(screen, (0, 0, 255), False, [[0, 80], [50, 90], [200, 80], [220, 30]], 1)# 繪制一個灰色的矩形區域,以灰色填充區域pygame.draw.rect(screen, (155, 155, 155), (75, 10, 50, 20), 0)# 繪制一個線框寬度為2的矩形區域pygame.draw.rect(screen, (0, 0, 0), [150, 10, 50, 20],2)# 繪制一個橢圓形,其線寬為2pygame.draw.ellipse(screen, (255, 0, 0), (225, 10, 50, 20), 2)# 繪制一個實心的紅色橢圓形pygame.draw.ellipse(screen, (255, 0, 0), (300, 10, 50, 20))# 繪制一個綠色邊框(寬度為2)三角形pygame.draw.polygon(screen, (100, 200, 45), [[100, 100], [0, 200], [200, 200]], 2)# 繪制一個藍色實心的圓形,其中[60,250]表示圓心的位置,40為半徑,width默認為0pygame.draw.circle(screen, (0, 0, 255), [60, 250], 40)# 繪制一個圓弧,其中0表示弧線的開始位置,pi/2表示弧線的結束位置,2表示線寬pygame.draw.arc(screen, (255, 10, 0), (210, 75, 150, 125), 0, pi / 2, 2)# 刷新顯示屏幕pygame.display.flip() # 點擊關閉,退出pygame程序 pygame.quit()

程序的運行結果如下所示:

圖1:Pygame繪圖函數用法

總結

以上是生活随笔為你收集整理的Pygame Draw绘图函数详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。