- Kivy 教程
- Kivy - 首頁
- Kivy 基礎
- Kivy - 入門
- Kivy - 安裝
- Kivy - 架構
- Kivy - 檔案語法
- Kivy - 應用程式
- Kivy - Hello World
- Kivy - 應用生命週期
- Kivy - 事件
- Kivy - 屬性
- Kivy - 輸入
- Kivy - 行為
- Kivy 按鈕
- Kivy - 按鈕
- Kivy - 按鈕事件
- Kivy - 按鈕顏色
- Kivy - 按鈕大小
- Kivy - 按鈕位置
- Kivy - 圓形按鈕
- Kivy - 停用按鈕
- Kivy - 圖片按鈕
- Kivy 小部件
- Kivy - 小部件
- Kivy - 標籤
- Kivy - 文字輸入
- Kivy - 畫布
- Kivy - 線
- Kivy - 複選框
- Kivy - 下拉列表
- Kivy - 視窗
- Kivy - 滾動檢視
- Kivy - 走馬燈
- Kivy - 滑塊
- Kivy - 圖片
- Kivy - 彈出視窗
- Kivy - 開關
- Kivy - 微調器
- Kivy - 分隔器
- Kivy - 進度條
- Kivy - 氣泡
- Kivy - 標籤頁面板
- Kivy - 散點圖
- Kivy - 手風琴
- Kivy - 檔案選擇器
- Kivy - 顏色拾取器
- Kivy - 程式碼輸入
- Kivy - 模態檢視
- Kivy - 切換按鈕
- Kivy - 相機
- Kivy - 樹檢視
- Kivy - reStructuredText
- Kivy - 操作欄
- Kivy - 播放器
- Kivy - 模板檢視
- Kivy - 虛擬鍵盤
- Kivy - 觸控漣漪
- Kivy - 音訊
- Kivy - 影片
- Kivy - 拼寫檢查
- Kivy - 效果
- Kivy - 輸入錄製器
- Kivy - OpenGL
- Kivy - 文字
- Kivy - 文字標記
- Kivy - 設定
- Kivy 佈局
- Kivy - 佈局
- Kivy - 浮動佈局
- Kivy - 網格佈局
- Kivy - 箱式佈局
- Kivy - 堆疊佈局
- Kivy - 錨點佈局
- Kivy - 相對佈局
- Kivy - 頁面佈局
- Kivy - 回收佈局
- Kivy - 佈局巢狀
- Kivy 高階概念
- Kivy - 配置物件
- Kivy - 圖集
- Kivy - 資料載入器
- Kivy - 快取管理器
- Kivy - 控制檯
- Kivy - 動畫
- Kivy - 多筆劃
- Kivy - 時鐘
- Kivy - SVG
- Kivy - UrlRequest
- Kivy - 剪貼簿
- Kivy - 工廠
- Kivy - 手勢
- Kivy - 語言
- Kivy - 圖形
- Kivy - 繪製
- Kivy - 打包
- Kivy - 花園
- Kivy - 儲存
- Kivy - 向量
- Kivy - 實用工具
- Kivy - 檢查器
- Kivy - 工具
- Kivy - 日誌記錄器
- Kivy - 幀緩衝區
- Kivy 應用程式和專案
- Kivy - 繪圖應用程式
- Kivy - 計算器應用程式
- Kivy - 計時器應用程式
- Kivy - 相機處理
- Kivy - 圖片檢視器
- Kivy - 貝塞爾曲線
- Kivy - 畫布壓力測試
- Kivy - 圓形繪製
- Kivy - 小部件動畫
- Kivy - 雜項
- Kivy 有用資源
- Kivy - 快速指南
- Kivy - 有用資源
- Kivy - 討論
Kivy - 畫布壓力測試
在本章中,我們將瞭解圖形引擎的效率如何。這可以透過向 Kivy 物件的畫布新增大量圖形指令來實現。
下面給出的程式測量了圖形引擎繪製一萬個隨機位置和隨機顏色值的矩形所需的時間。因此,它將評估畫布可以承受多少壓力。
語法
使用以下語法在任何 Kivy 小部件的畫布上繪製矩形指令:
with self.root.canvas: Color(r,g,b,a) Rectangle(pos, size)
我們將為 RGB 以及矩形的 x 和 y 座標生成隨機值,並顯示 10,000 個矩形。使用 perf_counter() 函式計算為此花費的時間。
t1=perf_counter()
with self.root.canvas:
for i in range(10000):
Color(r,g,b,a)
Rectangle(pos, size)
t2=perf_counter()
繪製所需的時間將是“t2 - t1”。它將顯示在 Kivy 應用視窗的標題欄上。
示例
完整的程式如下所示:
from kivy.app import App
from kivy.graphics import *
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from random import random as r
from time import perf_counter
from kivy.core.window import Window
Window.size = (720, 400)
class StresstestApp(App):
def add_rects(self, *args):
self.t1 = perf_counter()
with self.root.canvas:
for i in range(10000):
Color(r(), 1, 1, mode='hsv')
Rectangle(
pos=(r() * self.root.width + self.root.x, r() * self.root.height + self.root.y),
size=(20, 20)
)
self.t2 = perf_counter()
self.title = str(self.t2 - self.t1) + "Sec. to draw 10000 rectangles"
def build(self):
main = GridLayout(cols=1)
self.root = FloatLayout(size=(Window.width, 100))
self.btn1 = Button(
text='start', size_hint=(1, None),
pos_hint={'center_x': .5, 'center_y': .1}
)
self.btn1.bind(on_press=self.add_rects)
self.root.add_widget(self.btn1)
main.add_widget(self.root)
return main
StresstestApp().run()
輸出
執行程式並點選“開始”按鈕。
您將在標題欄中看到繪製所需的時間,如下面的圖所示:
廣告