Javascript 缩放画布。我做错了什么

Javascript 缩放画布。我做错了什么,javascript,canvas,Javascript,Canvas,我正在尝试使用scale命令缩放画布 我做错了什么?我不清楚你想做什么,但我想到了这些想法: 要获得准确的画布鼠标位置,请相对于画布元素计算: $('#myCanvas').click(function (e) { //Default mouse Position console.log(e.pageX); $("#myCanvas2").attr("width", e.pageX ); $("#myCanvas3").attr("width", e.pageX );

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


我做错了什么?

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

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

$('#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);
    });
关于混合CSS和画布:

  • CSS缩放将在元素的中心进行操作
  • 画布比例将从原点操作(原点默认为0,0)
  • CSS缩放不会影响画布绘制。因此,如果使用CSS缩放“翻转”,然后将翻转的元素绘制到画布上,则生成的画布图形不会翻转
  • 更改画布元素宽度也会自动清除画布内容
  • 更改CSS宽度将保留画布内容,但会将现有像素“拉伸”到新宽度(内容将出现变形)
画布缩放命令仅影响在缩放命令之后完成的图形。因此,您的
context3.scale(3,3)
不会影响您以前在myCanvas3上绘制的任何内容

以下是如何在画布元素上水平翻转图像:

示例代码和演示:


到底出了什么问题?你有一个链接到一个例子吗?它只是似乎没有规模。我已经在函数外定义了我的上下文。唯一似乎不起作用的是scale命令。此线程应该有帮助:
$('myCanvas').click(function(e){

    var BB=canvas.getBoundingClientRect();
    var mouseX=parseInt(e.clientX-BB.left);
    var mouseY=parseInt(e.clientY-BB.top);
}
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();