html5 – 如何将画布的一部分捕获到位图

我想捕获一个画布的一小部分作为位图.那可能吗?这样我可以在该区域上绘制另一个位图后替换它.一旦我完成了位图,我想用原始作品替换我画的一小块画布.

谢谢!

解决方法

你可以使用 .getImageData().putImageData()来做到这一点

var canvas,ctx,img,imgd,col;
window.onload = function () {
    canvas = document.getElementById('canvas');
    ctx = canvas.getContext('2d');
    col = {
        0: '#000',.25: '#0099f9',.55: '#03f',1: '#000'
    };
    img = document.getElementById('img');
    var w = h = canvas.width = canvas.height = 200;

    var grad = ctx.createradialGradient(w / 2,w / 2,h);
    for (var i in col) {
        grad.addColorStop(i,col[i]); //just a funny mess,please don't bother :)
    }

    ctx.fillStyle = grad;
    ctx.fillRect(0,w,h);
    imgd = ctx.getimageData(50,50,20,20); //caching the image Data

}

function draw() {
    ctx.drawImage(img,20); //drawing Image on to canvas
}

function redraw() {
    ctx.putimageData(imgd,20); //redraw the cached Image Data
}

一个简单的在线示例,只有你:)

Try it Here

相关文章

HTML5和CSS3实现3D展示商品信息的代码
利用HTML5中的Canvas绘制笑脸的代码
Html5剪切板功能的实现
如何通过HTML5触摸事件实现移动端简易进度条
Html5移动端获奖无缝滚动动画实现
关于HTML5和CSS3实现机器猫的代码