###### tags: `konva`, `canvas`, `javascript` # 【自學筆記】konva入門 - 基本介紹 `Konva`是個`HTML5 Canvas JavaScript`的框架,透過`2d context`的擴展實現各種圖形功能,正好可以實現最近工作需求,就來研究看看囉 --- ### Konva的基本結構 Konva有一定的結構,有些類似於DOM結構,通過add、remove..實現節點的添加和刪除 Konve Tree主要包含四個部分:`Stage`、`Layer`、`Group`、`Shape` :::info Stage根節點 ::: 創建一個`div`節點作為事件的接收層,根據事件觸發時的資訊來處理。 一個`Stage`可以包含多個`Layer` :::info Layer圖層 ::: `Layer`會創建一個`Canvas`節點,用來繪製`Canvas`的元素。 一個`Layer`可以包含多個`Group`和`Shape` :::info Group組 ::: `Group`包含多個`Shape`,對`Group`設置,其中的所有`Shape`都會生效 :::info Shape ::: 指`Text`、`Rect`、`Circle`等各種Konva封裝好的類。 ![](https://i.imgur.com/dzp6oKL.png) >圖片來源: https://cloud.tencent.com/developer/article/1888589 ![](https://i.imgur.com/bIHnzyG.png) >圖片來源: https://cloud.tencent.com/developer/article/1888589 ### 使用方式 最最基本的使用方式,直接看程式 ```htmlembedded= <div id="container"></div> ``` ```javascript= // 先創建一個Stage var stage = new Konva.Stage({ container: 'container', width: 500, height: 500 }); // 然後創建一個layer var layer = new Konva.Layer(); // 設計圖形(Shape) var circle = new Konva.Circle({ x: 150, y: 150, radius: 70, fill: 'red', stroke: 'black', strokeWidth: 4 }); var rect = new Konva.Rect({ x: 20, y: 20, width: 100, height: 50, fill: 'green', stroke: 'black', strokeWidth: 4, }); // 把shape加到layer中 layer.add(circle); layer.add(rect); // 把整個layer加進stage stage.add(layer); // 畫出來 layer.draw(); ``` --- *參考資料: https://konvajs.org/docs/* *參考資料: https://cloud.tencent.com/developer/article/1888589* *新手工程師的筆記,純粹記錄學了些啥東西 如果有前輩高人讀了我的文,文中有任何錯誤再麻煩指教指教*