Html5 Canvas:drawImage()的替代方案

时间:2014-07-08 20:20:17

标签: javascript html5 canvas

由于我遇到了一些舍入问题*使用默认的scale() - 画布的功能我已经为画布实现了我自己的矩阵转换。这个工作正常,唯一的例外是,我无法旋转图像,因为drawImage()函数只能用图片的左上角参数化。

还有其他方法可以在画布上绘制图像吗?一个方法,至少可以使用顶部,左侧和右下角的坐标进行参数化,以便我可以手动旋转坐标?

*问题是在缩放因子之后形状之间的一个像素间隙<1。 1。

1 个答案:

答案 0 :(得分:1)

根据评论中的小提琴,您可以使用内存画布作为后台缓冲区来绘制正常大小所需的内容,然后缩放主画布的上下文并使用drawImage绘制比例结果。

enter image description here

Live Demo

var canvas = document.getElementById('c');
var context = canvas.getContext('2d');

var backBuffer = document.createElement("canvas"),
    bCtx = backBuffer.getContext("2d");

paint = function (x, y, scale) {

    bCtx.clearRect(0,0,backBuffer.width,backBuffer.height);;
    bCtx.beginPath();
    bCtx.rect(x, y, 30, 30);
    bCtx.fillStyle = 'black';
    bCtx.fill();

    bCtx.beginPath();
    bCtx.rect(x + 30, y, 30, 30);
    bCtx.fillStyle = 'black';
    bCtx.fill();

    context.save();
    context.scale(scale,scale);
    context.drawImage(backBuffer,0,0);
    context.restore();
}

paint(10, 10, 1);
paint(10, 70, .66);
相关问题