
- 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 庫中,“Line” 是“kivy.graphics”模組中一個重要的頂點指令。在 Kivy 中,所有繪圖都在與任何可用小部件關聯的畫布上完成。Line 指令繪製一條線,或一系列線,以及其他形狀,如矩形、橢圓、貝塞爾曲線等。
必須注意,Kivy 繪圖指令不會自動相對於小部件的位置或大小。相反,所有小部件的畫布共享一個公共座標空間。
Line 函式需要一個數值列表。數字的解釋取決於將此列表分配到的引數。List 函式的引數是點、矩形、橢圓、貝塞爾曲線等。
繪製矩形
語法
可以使用以下語法,透過 Line 函式繪製矩形:
with self.canvas: Line(rectangle=[x, y, w, h], width)
這裡,“x” 和“y”表示矩形的左下角位置,“w” 和“h”表示寬度和高度。線條會自動閉合。
還可以使用 rounded_rectangle 屬性來構建具有圓角的矩形。引數必須是以下格式之一的元組:
(x, y, width, height, corner_radius)
(x, y, width, height, corner_radius, resolution)
(x, y, width, height, corner_radius1, corner_radius2, corner_radius3, corner_radius4)
(x, y, width, height, corner_radius1, corner_radius2, corner_radius3, corner_radius4, resolution)
示例
from kivy.app import App from kivy.uix.widget import Widget from kivy.graphics import * from kivy.core.window import Window Window.size = (720,300) class drawRectangle(App): def build(self): widget = Widget() with widget.canvas: Color(1, 0, 1, 1) Line( rectangle=(50, 50, 300, 200), width=3 ) Line(rounded_rectangle=(500, 200, 300, 200, 20, 20, 20, 20)) return widget drawRectangle().run()
輸出
它將生成以下輸出視窗:

繪製橢圓
需要將數值列表分配給 Line 指令的 ellipse 屬性。ellipse 引數的值必須是以下元組:
(x, y, width, height, angle_start, angle_end, segments)
其中,
"x" 和 "y" 表示橢圓的左下角
"width" 和 "height" 表示橢圓的大小。如果這兩個值相同,結果將是一個圓形
"angle_start" 和 "angle_end" 以度為單位。預設值為 0 和 360。
"segments" 是橢圓的精度。可以使用此屬性建立具有 3 個或更多邊的多邊形。小於 3 的值將不會顯示。
示例
在下面的程式碼中,Line 指令用於使用不同的引數繪製橢圓:
from kivy.app import App from kivy.uix.widget import Widget from kivy.graphics import * from kivy.core.window import Window Window.size = (720,400) class drawEllipse(App): def build(self): widget = Widget() with widget.canvas: Color(0.5, .2, 0.4, 1) Line(ellipse=(500, 70, 200, 200), width=4) Line(ellipse=(100, 200, 100, 200), width=4) Color(.2, .8, 0, 1) Line(ellipse=(200, 100, 200, 100), width=4) Line(ellipse=(500, 300, 250, 90, 45, 270), width=3) Color(.1, .8, .3, 1) Line(ellipse=(200, 400, 200, 80, 180, 420, 30), width=5) return widget drawEllipse().run()
輸出

繪製貝塞爾曲線
貝塞爾曲線由一些控制點加權,這些控制點包含在指令中。Line() 函式接受 Bezier 引數,並將 (x,y) 座標對列表傳遞給它。引數必須是 2n 個元素的列表,“n”是點的數量。
with self.canvas: Line(bezier=[x1, y1, x2, y2, x5, y3], width)
需要注意的是,Line 指令函式的 points 引數也接收類似的 2n 個元素集。points 屬性在連續點之間繪製一條線。
with self.canvas: Line(points=[x1, y1, x2, y2, x5, y3], width)
Line 指令的 point 引數僅繪製每個 x-y 座標對對應的點,而沒有任何連線它們的線。
with self.canvas: Line(point=[x1, y1, x2, y2, x5, y3], width)
示例
以下程式碼使用相同的“x”和座標對集來僅繪製點、線和貝塞爾線:
from kivy.app import App from kivy.uix.widget import Widget from kivy.graphics import * from kivy.core.window import Window Window.size = (720, 400) class drawBezier(App): def build(self): widget = Widget() with widget.canvas: Color(0, 1, 1, 1) Bezier( points=[700, 400, 450, 300, 300, 350, 350, 200, 200, 100, 150, 10], segments=20 ) Color(1, 1, 0, 1) Point( points=[700, 400, 450, 300, 300, 350, 350, 200, 200, 100, 150, 10], pointsize=5 ) Color(.1, .1, .8) Line( points=[700, 400, 450, 300, 300, 350, 350, 200, 200, 100, 150, 10], pointsize=3 ) return widget drawBezier().run()
輸出
執行此程式碼時,它將生成如下所示的輸出視窗:

需要注意的是,Kivy 提供了另一組頂點指令來使用 Rectangle、Ellipse、Bezier 指令繪製這些形狀。這些與 Line 指令的 rectangle、ellipse 和 bezier 引數不同。
注意指令本身和引數的首字母大寫(Ellipse 指令與 Line 指令的 ellipse 引數)。Line 函式繪製形狀而不重新計算點。