gpt4 book ai didi

javascript - HTML5 - 跟踪 Canvas 上的圆圈数

转载 作者:行者123 更新时间:2023-11-28 01:43:53 25 4
gpt4 key购买 nike

有没有办法统计 Canvas 上绘制的形状数量我正在使用某种画笔在 Canvas 上绘制一串圆圈,并希望找到一种方法来计算存在的数量

var mainCanvas = document.getElementById('draw1');
mainContext = mainCanvas.getContext('2d');

var CircleBrush = {

iPrevX: 0,
iPrevY: 0,

// initialization function
init: function () {
mainContext.globalCompositeOperation = 'source-over';
mainContext.lineWidth = 1;
mainContext.strokeStyle = '#4679BD';
mainContext.lineWidth = 1;
mainContext.lineJoin = 'round';

},

startCurve: function (x, y) {
this.iPrevX = x;
this.iPrevY = y;
mainContext.fillStyle = '#4679BD';
},

draw: function (x, y) {
var iXAbs = Math.abs(x - this.iPrevX);
var iYAbs = Math.abs(y - this.iPrevY);
var rad = 6;

if (iXAbs > 10 || iYAbs > 10) {
mainContext.beginPath();
mainContext.arc(this.iPrevX, this.iPrevY, rad, Math.PI * 2, false);
mainContext.fill();
mainContext.stroke();
this.iPrevX = x;
this.iPrevY = y;

}
}
};
var circleCounter = [0];
mainContext.font = '21pt Arial';
mainContext.fillStyle = '#262732';
mainContext.textBaseline = 'top';
mainContext.fillText(circleCounter, 20, 20);
CircleBrush.init();
$('#draw1').mousedown(function (e) { // mouse down handler
cMoeDo = true;
var canvasOffset = $('#draw1').offset();
var canvasX = Math.floor(e.pageX - canvasOffset.left);
var canvasY = Math.floor(e.pageY - canvasOffset.top);
CircleBrush.startCurve(canvasX, canvasY);
circleCounter ++1;
});

$('#draw1').mouseup(function (e) { // mouse up handler
cMoeDo = false;
});

$('#draw1').mousemove(function (e) { // mouse move handler
if (cMoeDo) {
var canvasOffset = $('#draw1').offset();
var canvasX = Math.floor(e.pageX - canvasOffset.left);
var canvasY = Math.floor(e.pageY - canvasOffset.top);
CircleBrush.draw(canvasX, canvasY);
circleCounter ++1;
}

})

演示 fiddle http://jsfiddle.net/A2vyY/

提前致谢

最佳答案

您需要清理计数器的空间并重新绘制计数。为了做到这一点,我将计数器和文本绘制放在绘图函数中,如下所示

draw: function (x, y) {        
var iXAbs = Math.abs(x - this.iPrevX);
var iYAbs = Math.abs(y - this.iPrevY);
var rad = 6;

if (iXAbs > 10 || iYAbs > 10) {
mainContext.beginPath();
mainContext.arc(this.iPrevX, this.iPrevY, rad, Math.PI*2, false);
mainContext.fill();
mainContext.stroke();
this.iPrevX = x;
this.iPrevY = y;
circleCounter ++;
mainContext.clearRect(0,0,50,25);
mainContext.fillText(circleCounter, 5, 5);
}
}

Updated jsFiddle (我将计数器移动了一些,以便有更多的空间容纳点)

关于javascript - HTML5 - 跟踪 Canvas 上的圆圈数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20553273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com