我在畫布上用下面的代碼畫出手繪筆畫。我需要檢查有多少畫布覆蓋了筆畫。什麼是檢查的好方法?我能想到的唯一的事情就是計算鼠標向上事件中具有特定顏色的像素數量。但它是跛腳,因爲它很慢...如何計算繪製區域的面積?
任何幫助嗎?
$(document).ready(function(){
var draw = false;
var x_prev = null, y_prev = null;
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
canvas.mousedown(function(e){
draw = true;
x_prev = e.pageX - this.offsetLeft;
y_prev = e.pageY - this.offsetTop;
});
window.mouseup(function(){draw=false});
canvas.mousemove(function(e){
if(draw){
context.beginPath();
context.moveTo(e.pageX - this.offsetLeft, e.pageY - this.offsetTop);
context.lineTo(x_prev, y_prev);
context.stroke();
context.closePath();
x_prev = e.pageX - this.offsetLeft;
y_prev = e.pageY - this.offsetTop;
}
});
線條有多厚?另外,你是否會考慮抗鋸齒? – Blender 2012-02-14 03:53:45
任意粗。但厚度是硬編碼的。我不太在意反鋸齒,我只是需要一些能給我一個很好的近似值。這是一款遊戲,我不需要高精度。 – akonsu 2012-02-14 03:55:59
你打算如何處理線重疊?你可以使用'area + = thickness * sqrt((e.pageX - this.offsetLeft - x_prev)^ 2 +(e.pageY - this.offsetTop - y_prev)^ 2);',但這並不代表相交的線。 – Blender 2012-02-14 04:00:05