javascript - Html5 Canvas : alternative for drawImage()

标签 javascript html canvas

由于我在 Canvas 的默认scale()函数中遇到了一些舍入问题*,我已经为 Canvas 实现了自己的矩阵转换。这工作正常,唯一的异常(exception)是,我无法旋转图像,因为 drawImage() 函数只能用图片的左上角进行参数化。

还有其他方法可以在 Canvas 上绘制图像吗?至少可以参数化顶部、左侧和右下角的坐标的方法?这样我就可以手动旋转坐标?

*问题是按 < 1 倍缩放后形状之间存在一个像素间隙。

最佳答案

根据评论中的 fiddle ,您可以使用内存 Canvas 作为后台缓冲区来以正常大小绘制所需的内容,然后缩放主 Canvas 的上下文并使用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);

关于javascript - Html5 Canvas : alternative for drawImage(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24641042/

相关文章:

javascript - jquery变形图像效果

html - 背景图像中的线条

javascript - Processing.js 值得吗?

javascript - 清除按钮不适用于我的 javascript 和 hmtl5 Canvas

javascript - 如何在使用 redux 调度操作后更新字段值

javascript - 查找因溢出而被隐藏的文本 :hidden?

JavaScript:允许用户更改背景图像

javascript - 为什么我的 Canvas 上的图像在没有文本覆盖的情况下被下载?

javascript - 使用 javascript 循环 Json 数组得到错误的输出

javascript - 打开jquery对话框后启用模式为true的按钮