缩放画布。我究竟做错了什么

时间:2014-07-08 07:22:37

标签: javascript canvas

$('#myCanvas').click(function (e) { //Default mouse Position 
        console.log(e.pageX);
$("#myCanvas2").attr("width", e.pageX );
$("#myCanvas3").attr("width", e.pageX );
        var imageData = context.getImageData(0, 0, e.pageX,400);
context2.putImageData(imageData,0,0);
context3.putImageData(imageData,0,0);
context.clearRect ( 0 , 0 , 2000 , 2000 );
$("#myCanvas3").css("scale", "(-1, 1)" );
$("#myCanvas3").css("transform", "scale(-1,1)");

 var canvas4 = document.getElementById('myCanvas4');
 var context4 = canvas4.getContext('2d');
 context4.drawImage( myCanvas2, 0,0 );
 context4.drawImage(myCanvas3, e.pageX,0 );


context3.scale(3,3);
    });

我正在尝试使用缩放命令缩放我的画布。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我不清楚你想做什么,但想到这些想法:

要获得准确的画布鼠标位置,请相对于canvas元素计算:

$('myCanvas').click(function(e){

    var BB=canvas.getBoundingClientRect();
    var mouseX=parseInt(e.clientX-BB.left);
    var mouseY=parseInt(e.clientY-BB.top);
}

关于混合CSS和Canvas:

  • CSS比例将在元素的中心运行。
  • 画布比例将从原点开始(原点默认为0,0)。
  • CSS缩放不会影响Canvas绘图。所以如果你"翻转"使用CSS缩放然后将翻转的元素绘制到画布上,不会翻转生成的画布图。
  • 更改画布元素宽度也会自动清除画布内容。
  • 更改CSS宽度将保留画布内容,但会"拉伸"现有像素进入新宽度(内容会出现变形)。

画布缩放命令仅影响在缩放命令后完成的绘图。因此,context3.scale(3,3)不会影响您之前在myCanvas3上绘制的任何内容。

以下是如何在canvas元素上水平翻转图片:

示例代码和演示:http://jsfiddle.net/m1erickson/tSPB2/

var img=document.getElementById("theImg");
var iw=img.width;
var ih=img.height;
var canvas2=document.getElementById('myCanvas2');
var context2=canvas2.getContext('2d');
canvas2.width=iw;
canvas2.height=ih;
context2.save();
context2.translate(iw,0);
context2.scale(-1,1);
context2.drawImage(img,0,0);
context2.restore();

enter image description here