【问题标题】:HTML5 Javascript Canvas Rotation JSFiddle won't run same code with same resultHTML5 Javascript Canvas Rotation JSFiddle 不会以相同的结果运行相同的代码
【发布时间】:2023-03-06 11:31:01
【问题描述】:

所以我对画布旋转进行了一些研究,发现了一种旋转单个对象的好方法。(Source) 当我正在重写代码时,我正在理解代码是如何工作的这个奇怪的东西。

这是链接中的JSFiddle

var canvas = document.getElementById('test_canvas');
var ctx = canvas.getContext('2d');

var buffer = document.createElement('canvas');
buffer.width = buffer.height = 60;
var bctx = buffer.getContext('2d');
bctx.translate(30, 30);
bctx.rotate(0.5);
bctx.fillStyle = 'rgb(255, 0, 0)';
bctx.fillRect(-15, -15, 30, 30);

ctx.fillStyle = 'rgb(0, 255, 0)';
ctx.fillRect(30, 30, 30, 30);
ctx.drawImage(buffer, 50, 50);

这里是my JSFiddle:

var myCanvas = document.getElementById("buffer");
var context = myCanvas.getContext('2d');

var myCanvas1 = document.createElement('canvas');
myCanvas1.width = myCanvas1.height = 60;
var newContext = myCanvas1.getContext('2d');
newContext.translate(30, 30);
newContext.rotate(0.5);
newContext.fillStyle = 'rgb(255, 0, 0)';
newContext.fillRect(-15, -15, 30, 30);

context.fillStyle = 'rgb(0, 255, 0)';
context.fillRect(30, 30, 30, 30);
context.drawImage(buffer, 50, 50);

除了我的代码不旋转对象之外,它们几乎是彼此的完全相同的副本。我困惑地看了这个代码几个小时,我真的很想知道其他人做对了什么。

【问题讨论】:

    标签: javascript rotation html5-canvas jsfiddle


    【解决方案1】:

    你的问题在于这一行:

    context.drawImage(buffer, 50, 50);
    

    原始代码使用了一个名为 buffer 的变量并为其分配了一个新的画布元素:

    var buffer = document.createElement('canvas');
    

    你已经命名了:

    var myCanvas1 = document.createElement('canvas');
    

    但稍后会将您的图像绘制到一个不存在的变量buffer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多