[TOC]
# **class pygame.BufferProxy**
BufferProxy 是 Surface 對象通過數組協議導出的一個緩沖對象。
BufferProxy() -> BufferProxy
## **屬性 & 方法**
* pygame.BufferProxy.parent — 返回被打包輸出的對象
* pygame.BufferProxy.length — 輸出緩沖區的尺寸,以字節為單位
* pygame.BufferProxy.raw — 一個導出緩沖區的拷貝,存儲在單一的字節塊中
* pygame.BufferProxy.write() — Write raw bytes to object buffer.
BufferProxy 是 Pygame 支持的一種類型,用于作為 Surface.get\_buffer() 和 Surface.get\_view() 方法的返回值。對于所有版本的 Python,BufferProxy 對象輸出一個 C 結構和 Python 級別的數組接口代表其父對象的緩沖區。
對于 CPython2.6 及以后版本,使用了一個新的緩沖區接口輸出。在 Pgame 中,BufferProxy 是實現 surfarray 模塊(用于通過數組接口訪問 Surface 對象的像素數據)的關鍵。
BufferProxy 實例可以直接通過 Python 代碼實現,但無論是作為父對象輸出的接口,或者 Python 字典描述的緩沖區布局,該實例(所有的字典項目均基于 Python 級別的數組接口映射方式)均包含以下鍵:
| **鍵** | **值(類型)** | **含義** |
| --- | --- | --- |
| “shape” | 元組 | 1\. 元祖中每個元素表示數組每個維度的長度 2. 元祖的長度表示數組的維數 |
| “typestr” | 字符串 | 用 3 個字符的字符串來描述數組元素的類型: — 第 1 個字符表示字節順序:’’ 表示大端;’|’ 表示不適用 — 第 2 個字符表示元素的類型:’i’ 表示帶符號整形;’u’ 表示無符號整形;’f’ 表示浮點型;’V’ 表示字節塊 — 第 3 個字符表示每個元素的字節數:1 ~ 9 個字節 例如:”<u4” 表示無符號 4 個字節的小端整數,通常是 32 位像素的電腦;而 “|V3” 則表示 24 位像素(但沒有對應的整數) |
| “data” | 元組 | 用一個 2 元祖表示物理緩沖區的起始地址和只讀標志:起始地址是整型值,而只讀標志是布爾類型(False 表示可寫入,True 表示只讀) |
| “strides”(可選) | 元組 | 描述步進的信息,需要非 C 的相鄰數組,但該元祖的長度必須與 “shape” 相匹配 |
| “parent”(可選) | 對象 | 輸出對象,用于保持當緩沖區可見時父對象存活 |
| “before”(可選) | 回調函數 | 1\. 指定當 BufferProxy 實例輸出緩沖區時的回調函數 2. 如果指定 “parent” 對象,該回調函數作為參數傳遞,否則參數為 None 3. 該回調函數對設置父對象鎖有用 |
| “after”(可選) | 回調函數 | 1\. 指定當 BufferProxy 實例輸出緩沖區被釋放時的回調函數 2. 如果指定 “parent” 對象,該回調函數作為參數傳遞,否則參數為 None 3. 該回調函數對釋放父對象鎖有用 |
該 BufferProxy 類支持的子類,實例變量和弱引用。
## **屬性 & 方法詳解**
### **parent**
返回被打包輸出的對象。
parent -> Surface parent ->
返回該 BufferProxy 的 Surface 對象,或者調用 BufferProxy 的對象。
### **length**
輸出緩沖區的尺寸,以字節為單位。
length -> int
導出數據的有效字節數。對于不連續(不在同一塊內存中)數據來說,間隙中的字節并不在計算范圍內。該屬性等同于 C 的 Py\_buffer 結構的 len 字段。
### **raw**
一個導出緩沖區的拷貝,存儲在單一的字節塊中。
raw -> bytes
將緩沖區的數據拷貝為 str 或 bytes 對象,導出數據中的任何間隙將被刪除。
### **write()**
寫入原始字節到緩沖區對象中。
write(buffer, offset=0)
覆蓋寫入父對象中的字節數據。數據必須是連續的 C 或 F,否則將拋出 ValueError 異常。
buffer 參數是 str 或 bytes 對象。
可選參數 offset 指定緩沖區內開始覆蓋的起始偏移位置,以字節為單位。
如果偏移量為負數或大于等于緩沖區的尺寸,將拋出 IndexException 異常。
如果 len(buffer) > proxy.length + offset,將拋出 ValueError 異常。
- 一、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