Плохие новости: То, что вы хотите, не может быть сделано с Konvajs, так как он предназначен для работы с векторными изображениями.Каждая фигура создается как единое целое с помощью уравнения и «отделяется» от других фигур (поскольку линии X и Y и окружность в приведенном ниже фрагменте разделены. Это не растровый слой. Создание инструмента заливки в вектореграфика жесткая.
(см. Хорошие новости в конце!)
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 circle = new Konva.Circle({
x: 180,
y: 120,
radius: 50,
fill: 'red',
stroke: 'black',
strokeWidth: 4
});
var lineX = new Konva.Line({
x: 180, // 180-50
y: 120,
points: [-100, 0, 100, 0],
stroke: 'black',
strokeWidth: 4
});
var lineY = new Konva.Line({
x: 180, // 180-50
y: 120,
points: [0, -100, 0, 100],
stroke: 'black',
strokeWidth: 4
});
circle.on('click', function() {
var fill = this.fill() == 'red' ? '#00d00f' : 'red';
this.fill(fill);
layer.draw();
});
layer.add(circle);
layer.add(lineX);
layer.add(lineY);
stage.add(layer);
body {
margin: 0;
padding: 0;
overflow: hidden;
background-color: #f0f0f0;
}
<script src="https://unpkg.com/konva@3.2.6/konva.min.js"></script>
<div id="container"></div>
Хорошие новости: Но вы можете сделать это с помощью Canvas, HTML5 и Javascript.
Здесь у вас есть хороший учебник, который включает DEMO (вверху страницы) и SOURCE CODE
до Создание инструмента Bucket Paint в HTML5 и JavaScript
Надеюсь, это поможет вам!