Javascript 5. $(_画布) .套索() .on(“lassoStart”,函数(e,lassoPoint){ console.log('lasso start'); var pos=lassoPoint; ctx.beginPath(); ctx.moveTo(位
5. $(_画布) .套索() .on(“lassoStart”,函数(e,lassoPoint){ console.log('lasso start'); var pos=lassoPoint; ctx.beginPath(); ctx.moveTo(位置[0],位置[1]); 控制台日志(pos); }) .on(“lassoDone”,函数(e,lassoPoints){ console.log('lasso done'); var pos=套索点[0]; ctx.lineTo(位置[0],位置[1]); ctx.fill(); 控制台日志(pos); }) .bind(“lassoPoint”,函数(e,lassoPoint){ var pos=lassoPoint; ctx.lineTo(位置[0],位置[1]); ctx.fill(); 控制台日志(pos); }); }Javascript 5. $(_画布) .套索() .on(“lassoStart”,函数(e,lassoPoint){ console.log('lasso start'); var pos=lassoPoint; ctx.beginPath(); ctx.moveTo(位,javascript,jquery,html5-canvas,Javascript,Jquery,Html5 Canvas,5. $(_画布) .套索() .on(“lassoStart”,函数(e,lassoPoint){ console.log('lasso start'); var pos=lassoPoint; ctx.beginPath(); ctx.moveTo(位置[0],位置[1]); 控制台日志(pos); }) .on(“lassoDone”,函数(e,lassoPoints){ console.log('lasso done'); var pos=套索点[0]; ctx.lineTo(位置[0]
您是否尝试过在谷歌上搜索教程?学习现有项目的代码,比如?我一直在谷歌上搜索教程,我只找到铅笔画的东西(不是点对点的)。以及现有项目?=>我不知道你是否已经检查过这个,但是pixlr编辑器是一个FLASH应用程序?我正在寻找HTML5画布解决方案哇,这是一些非常好的资源,感谢您的回复。我发现了一个插件,可以剪切图片的一部分并使其透明:因此,根据您的解释,我可能可以构建一个类似多边形套索的工具并修复这个问题!谢谢!
/* First, get pixel data from your 3 canvas into
* layerPixData, resultPixData, picturePixData
*/
// read the entire pixel array
for (var i = 0 ; i < layerPixData.length ; i+=4 ) {
//if the pixel is not blank, ie. it is part of the selected shape
if ( layerPixData[i] != 255 || layerPixData[i+1] != 255 || layerPixData[i+2] != 255 ) {
// copy the data of the picture to the result
resultPixData[i] = picturePixData[i]; //red
resultPixData[i+1] = picturePixData[i+1]; //green
resultPixData[i+2] = picturePixData[i+2]; //blue
resultPixData[i+3] = picturePixData[i+3]; //alpha
// here you can put the pixels of your picture to white if you want
}
}
/* sample css code for the canvas
#overlay-canvas {
position: absolute;
top: 0;
left: 0;
background-color: transparent;
opacity: 0.4;
-moz-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
-o-user-select: none;
}
*/
function getHighIndex(selector) {
if (!selector) { selector = "*" };
var elements = document.querySelectorAll(selector) ||
oXmlDom.documentElement.selectNodes(selector);
var ret = 0;
for (var i = 0; i < elements.length; ++i) {
if (deepCss(elements[i],"position") === "static")
continue;
var temp = deepCss(elements[i], "z-index");
if (temp != "auto")
temp = parseInt(temp, 10) || 0;
else
continue;
if (temp > ret)
ret = temp;
}
return ret;
}
maxZIndex = getHighIndex();
$.fn.extend({
lasso: function () {
return this
.mousedown(function (e) {
// left mouse down switches on "capturing mode"
if (e.which === 1 && !$(this).is(".lassoRunning")) {
var point = [e.offsetX, e.offsetY];
$(this).addClass("lassoRunning");
$(this).data("lassoPoints", [point]);
$(this).trigger("lassoStart", [point]);
}
})
.mouseup(function (e) {
// left mouse up ends "capturing mode" + triggers "Done" event
if (e.which === 1 && $(this).is(".lassoRunning")) {
$(this).removeClass("lassoRunning");
$(this).trigger("lassoDone", [$(this).data("lassoPoints")]);
}
})
.mousemove(function (e) {
// mouse move captures co-ordinates + triggers "Point" event
if ($(this).is(".lassoRunning")) {
var point = [e.offsetX, e.offsetY];
$(this).data("lassoPoints").push(point);
$(this).trigger("lassoPoint", [point]);
}
});
}
});
function onLassoSelect() {
// creating canvas for lasso selection
var _canvas = document.createElement('canvas');
_canvas.setAttribute("id", "overlay-canvas");
_canvas.style.zIndex = ++maxZIndex;
_canvas.width = document.width
_canvas.height = document.height
document.body.appendChild(_canvas);
ctx = _canvas.getContext('2d'),
ctx.strokeStyle = '#0000FF';
ctx.lineWidth = 5;
$(_canvas)
.lasso()
.on("lassoStart", function(e, lassoPoint) {
console.log('lasso start');
var pos = lassoPoint;
ctx.beginPath();
ctx.moveTo(pos[0], pos[1]);
console.log(pos);
})
.on("lassoDone", function(e, lassoPoints) {
console.log('lasso done');
var pos = lassoPoints[0];
ctx.lineTo(pos[0], pos[1]);
ctx.fill();
console.log(pos);
})
.bind("lassoPoint", function(e, lassoPoint) {
var pos = lassoPoint;
ctx.lineTo(pos[0], pos[1]);
ctx.fill();
console.log(pos);
});
}