HTML5 Canvas Set Shape Stroke Color and Width Tutorial
To set a shape stroke and stroke width with Konva, we can set the stroke
and strokeWidth
properties when we instantiate a shape, or we can use the stroke()
and strokeWidth()
methods.
Instructions: Mouseover the pentagon to change its stroke color and width.
- Vanilla
- React
- Vue
import Konva from 'konva'; var width = window.innerWidth; var height = window.innerHeight; var stage = new Konva.Stage({ container: 'container', width: width, height: height, }); var layer = new Konva.Layer(); var pentagon = new Konva.RegularPolygon({ x: stage.width() / 2, y: stage.height() / 2, sides: 5, radius: 70, fill: 'red', stroke: 'black', strokeWidth: 4, }); pentagon.on('mouseover', function () { this.stroke('blue'); this.strokeWidth(20); }); pentagon.on('mouseout', function () { this.stroke('black'); this.strokeWidth(4); }); // add the shape to the layer layer.add(pentagon); // add the layer to the stage stage.add(layer);
import React, { useState } from 'react'; import { Stage, Layer, RegularPolygon } from 'react-konva'; const App = () => { const [stroke, setStroke] = useState('black'); const [strokeWidth, setStrokeWidth] = useState(4); const [cursor, setCursor] = useState('default'); const handleMouseEnter = () => { setStroke('blue'); setStrokeWidth(20); setCursor('pointer'); }; const handleMouseLeave = () => { setStroke('black'); setStrokeWidth(4); setCursor('default'); }; return ( <Stage width={window.innerWidth} height={window.innerHeight} style={{ cursor: cursor }}> <Layer> <RegularPolygon x={window.innerWidth / 2} y={window.innerHeight / 2} sides={5} radius={70} fill="red" stroke={stroke} strokeWidth={strokeWidth} onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave} /> </Layer> </Stage> ); }; export default App;
<template> <v-stage :config="stageSize" :style="{ cursor: cursor }"> <v-layer> <v-regular-polygon :config="{ x: stageSize.width / 2, y: stageSize.height / 2, sides: 5, radius: 70, fill: 'red', stroke: strokeColor, strokeWidth: strokeWidth, }" @mouseenter="onMouseEnter" @mouseleave="onMouseLeave" /> </v-layer> </v-stage> </template> <script> export default { data() { return { stageSize: { width: window.innerWidth, height: window.innerHeight, }, strokeColor: 'black', strokeWidth: 4, cursor: 'default', }; }, methods: { onMouseEnter() { this.strokeColor = 'blue'; this.strokeWidth = 20; this.cursor = 'pointer'; }, onMouseLeave() { this.strokeColor = 'black'; this.strokeWidth = 4; this.cursor = 'default'; }, }, }; </script>