Javascript 5. $(_画布) .套索() .on(“lassoStart”,函数(e,lassoPoint){ console.log('lasso start'); var pos=lassoPoint; ctx.beginPath(); ctx.moveTo(位

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]

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); }); }
您是否尝试过在谷歌上搜索教程?学习现有项目的代码,比如?我一直在谷歌上搜索教程,我只找到铅笔画的东西(不是点对点的)。以及现有项目?=>我不知道你是否已经检查过这个,但是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);
        });
}