---
# System prepended metadata

title: 【自學筆記】konva入門 - 形狀
tags: [javascript, canvas, konva]

---

###### tags: `konva`, `canvas`, `javascript`
# 【自學筆記】konva入門 - 形狀

`Konva`是個`HTML5 Canvas JavaScript`的框架，透過`2d context`的擴展實現各種圖形功能，正好可以實現最近工作需求，就來研究看看囉

---

### Konva提供的形狀

Konva提供了這些封裝好的形狀使用：
`Rect`, `Circle`, `Ellipse`, `Line`, `Polygon`, `Spline`, `Blob`, `Image`, `Text`, `TextPath`, `Star`, `Label`, `SVG Path`, `RegularPolygon`

除此之外也可以自己設計形狀
```javascript=
var triangle = new Konva.Shape({
    sceneFunc: function(context) {
        context.beginPath();
        context.moveTo(20, 50);
        context.lineTo(220, 80);
        context.quadraticCurveTo(150, 100, 260, 170);
        context.closePath();

        // special Konva.js method
        context.fillStrokeShape(this);
      },
      fill: '#00D2FF',
      stroke: 'black',
      strokeWidth: 4
});
```
![](https://i.imgur.com/AZXGoDa.png)

### Konva的Style

每個形狀都有些Style屬性可以設置
* `Fill`, `Solid color`, `gradients` or `images`
* `Stroke` (`color`, `width`)
* `Shadow` (`color`, `offset`, `opacity`, `blur`)
* `Opacity`

例如這樣
```javascript=
var pentagon = new Konva.RegularPolygon({
    x: stage.width() / 2,
    y: stage.height() / 2,
    sides: 5,
    radius: 70,
    fill: 'red',
    stroke: 'black',
    strokeWidth: 4,
    shadowOffsetX : 20,
    shadowOffsetY : 25,
    shadowBlur : 40,
    opacity : 0.5
});
```
---

*參考資料: https://konvajs.org/docs/*

*新手工程師的筆記，純粹記錄學了些啥東西
如果有前輩高人讀了我的文，文中有任何錯誤再麻煩指教指教*