[TOC]
# **pygame.draw**
Pygame 中繪制圖形的模塊。
## **函數**
* 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 對象上繪制一些簡單的形狀。這些函數將渲染到任何格式的 Surface 對象上。硬件渲染會比普通的軟件渲染更耗時。
大部分函數用 width 參數指定圖形邊框的大小,如果 width = 0 則表示填充整個圖形。
所有的繪圖函數僅能在 Surface 對象的剪切區域生效。這些函數返回一個 Rect,表示包含實際繪制圖形的矩形區域。
大部分函數都有一個 color 參數,傳入一個表示 RGB 顏色值的三元組,當然也支持 RGBA 四元組。其中的 A 是 Alpha 的意思,用于控制透明度。不過該模塊的函數并不會繪制透明度,而是直接傳入到對應 Surface 對象的 pixel alphas 中。color 參數也可以是已經映射到 Surface 對象的像素格式中的整型像素值。
當這些函數在繪制時,必須暫時鎖定 Surface 對象。許多連續繪制的函數可以通過一次性鎖定直到畫完再解鎖來提高效率。
## **函數詳解**
### **pygame.draw.rect()**
繪制矩形。
rect(Surface, color, Rect, width=0) -> Rect
在 Surface 對象上繪制一個矩形。Rect 參數指定矩形的位置和尺寸。width 參數指定邊框的寬度,如果設置為 0 則表示填充該矩形。
### **pygame.draw.polygon()**
繪制多邊形。
### **polygon(Surface, color, pointlist, width=0) -> Rect**
在 Surface 對象上繪制一個多邊形。pointlist 參數指定多邊形的各個頂點。width 參數指定邊框的寬度,如果設置為 0 則表示填充該矩形。
繪制一個抗鋸齒的多邊形,只需要將 aalines() 的 closed 參數設置為 True 即可。
### **pygame.draw.circle()**
根據圓心和半徑繪制圓形。
circle(Surface, color, pos, radius, width=0) -> Rect
在 Surface 對象上繪制一個圓形。pos 參數指定圓心的位置,radius 參數指定圓的半徑。width 參數指定邊框的寬度,如果設置為 0 則表示填充該矩形。
### **pygame.draw.ellipse()**
根據限定矩形繪制一個橢圓形。
ellipse(Surface, color, Rect, width=0) -> Rect
在 Surface 對象上繪制一個橢圓形。Rect 參數指定橢圓外圍的限定矩形。width 參數指定邊框的寬度,如果設置為 0 則表示填充該矩形。
### **pygame.draw.arc()**
繪制弧線。
arc(Surface, color, Rect, start\_angle, stop\_angle, width=1) -> Rect
在 Surface 對象上繪制一條弧線。Rect 參數指定弧線所在的橢圓外圍的限定矩形。兩個 angle 參數指定弧線的開始和結束位置。width 參數指定邊框的寬度。
### **pygame.draw.line()**
繪制線段。
line(Surface, color, start\_pos, end\_pos, width=1) -> Rect
在 Surface 對象上繪制一條線段。兩端以方形結束。
### **pygame.draw.lines()**
繪制多條連續的線段。
lines(Surface, color, closed, pointlist, width=1) -> Rect
在 Surface 對象上繪制一系列連續的線段。pointlist 參數是一系列短點。如果 closed 參數設置為 True,則繪制首尾相連。
### **pygame.draw.aaline()**
繪制抗鋸齒的線段。
aaline(Surface, color, startpos, endpos, blend=1) -> Rect
在 Surface 對象上繪制一條抗鋸齒的線段。blend 參數指定是否通過繪制混合背景的陰影來實現抗鋸齒功能。該函數的結束位置允許使用浮點數。
### **pygame.draw.aalines()**
繪制多條連續的線段(抗鋸齒)。
aalines(Surface, color, closed, pointlist, blend=1) -> Rect
在 Surface 對象上繪制一系列連續的線段(抗鋸齒)。如果 closed 參數為 True,則首尾相連。blend 參數指定是否通過繪制混合背景的陰影來實現抗鋸齒功能。該函數的結束位置允許使用浮點數。
下邊是部分例子,僅供參考:

代碼如下:
```
import pygame
import sys
import math
from pygame.locals import *
pygame.init()
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
points = [(200, 175), (300, 125), (400, 175), (450, 125), (450, 225), (400, 175), (300, 225)]
size = width, height = 640, 1000
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Python Demo")
clock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
screen.fill(WHITE)
pygame.draw.rect(screen, BLACK, (50, 30, 150, 50), 0)
pygame.draw.rect(screen, BLACK, (250, 30, 150, 50), 1)
pygame.draw.rect(screen, BLACK, (450, 30, 150, 50), 10)
pygame.draw.polygon(screen, GREEN, points, 0)
pygame.draw.circle(screen, RED, (320, 400), 25, 1)
pygame.draw.circle(screen, GREEN, (320, 400), 75, 1)
pygame.draw.circle(screen, BLUE, (320, 400), 125, 1)
pygame.draw.ellipse(screen, BLACK, (100, 600, 440, 100), 1)
pygame.draw.ellipse(screen, BLACK, (220, 550, 200, 200), 1)
pygame.draw.arc(screen, BLACK, (100, 800, 440, 100), 0, math.pi, 1)
pygame.draw.arc(screen, BLACK, (220, 750, 200, 200), math.pi, math.pi * 2, 1)
pygame.display.flip()
clock.tick(10)
```
- 一、Python基礎
- 1. 序言
- 1.1 Python簡介
- 1.2 安裝和使用IDE
- 1.3 語言特性和基礎概念
- 2. 基本數據類型
- 2.2 字符串型
- 2.2.2 ASCII簡介
- 2.2.4 字符串常用函數
- 3. 條件分支
- 3.3 閑聊條件判斷和運算符優先級
- 10.正則表達式
- 【降龍十八章】Python小技巧
- 18.1 學習網址
- 18.2 PIP切換源
- 18.3 使用whl來安裝
- 【工具優化】IDE優化技巧
- Anaconda
- Jupyter Notebook 的 Markdown 添加大綱
- Jupyter Notebook中圖片縮放和居左
- Anaconda設置環境變量
- Pycharm
- PyCharm新建文檔配置
- 設置字體和字號
- 設置主題和字體配色
- 保存和導入配置
- 設置對選擇內容自動添加引號
- 推薦安裝的插件
- Markdown
- 表格格式
- 二、Python進階
- copy和deepcopy
- 《零基礎入門學習 Python 》【小甲魚版】
- 001.和Python的第一次接觸+習題復習
- 002.用Python設計的第一個游戲 +習題復習
- Pygame詳解
- Pygame詳解:前言
- Pygame詳解(一):Color類
- Pygame詳解(二):display 模塊
- Pygame詳解(三):draw 模塊
- Pygame詳解(四):event 模塊
- Pygame詳解(五):font 模塊
- Pygame詳解(六):image 模塊
- Pygame詳解(七):key 模塊
- Pygame詳解(八):locals 模塊
- Pygame詳解(九):mixer 模塊
- Pygame詳解(十):mouse 模塊
- Pygame詳解(十一):Rect 對象
- Pygame詳解(十二):Surface 對象
- Pygame詳解(十三):time 模塊
- Pygame詳解(十四):music 模塊
- Pygame詳解(十五):pygame 模塊
- Pygame詳解(十六):cursors 模塊
- Pygame詳解(十七):joystick 模塊
- Pygame詳解(十八):mask 模塊
- Pygame詳解(二十一):BufferProxy 對象
- Pygame詳解(二十三):gfxdraw 模塊
- Pygame詳解(二十五):Overlay 對象
- Pygame詳解(二十八):sndarray 模塊
- Pygame詳解(三十一):camera 模塊
- Pygame詳解(三十二):cdrom 模塊
- Pygame詳解(三十六):version 模塊
- pygame rect相關知識
- Tkinter詳解
- Tkinter 組件詳解(一):Label
- Tkinter 組件詳解(二):Button