javascriptでキャンバスの一部のみを回転させる方法は?

obeeey

JavaScriptキャンバスで少し遊ぶタスクがあります。映画と一緒に青いブロックをオンクリックして回転させる必要があります。フィドルでわかるように、それは機能しますが、問題はフィルムの下にある私の名前です-回転するべきではなく、キャンバスの下部の位置に留まる必要があります(クリックする前に、本来あるべき場所にあります)。これはフィドルです(映画はありませんが、問題があります):https//jsfiddle.net/463h8se7/

そしてこれは私のJavaScriptです(これもフィドルにありますが、ここでも明確にするためです):

var video;
var canvas;
var ctx;
var click = 0;

function animate() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  printName();
  ctx.save();
  ctx.fillStyle = "#558899";
  ctx.fillRect(canvas.width / 4 - 5, canvas.height / 4 - 5, canvas.width / 2 + 10, canvas.height / 2 + 10);
  ctx.drawImage(video, canvas.width / 4, canvas.height / 4, canvas.width / 2, canvas.height / 2);
  requestAnimationFrame(animate);
}

function rotate() {
  if (click == 0) {
    click = 1;
    i = window.setInterval(function () {
      ctx.translate(canvas.width / 2, canvas.height / 2);
      ctx.rotate(2 * Math.PI / 180);
      ctx.translate(-canvas.width / 2, -canvas.height / 2);
    }, 20);
  } else {
    click = 0;
    window.clearInterval(i);
  }
}

function printName() {
  ctx.fillStyle = "black";
  ctx.font = "15px Arial";
  ctx.fillText("aceimnors", canvas.width / 3, canvas.height - 1);
}

function load() {
  video = document.getElementById("video");
  canvas = document.getElementById("canvas");
  ctx = canvas.getContext('2d');
  animate();
}
<div id="div_canvas">
  <canvas id="canvas" onclick="rotate()"></canvas>
  <p>canvas</p>
</div>

EmilS.Jørgensen

animateあなたはすでにすべてを再描画しているので、私はそれを入れるだけですrequestAnimationFrame

angle変数を保持し、後ろに回転することを忘れないでください

var video = document.body.appendChild(document.createElement("img"));
video.id = "video";
video.addEventListener("load", load);
video.style.display = "none";
video.src = "https://www.w3schools.com/tags/img_girl.jpg";
var canvas = document.body.appendChild(document.createElement("canvas"));
canvas.id = "canvas";
var ctx = canvas.getContext("2d");
var click = false;
var angle = 0;
var angleTarget = 0;
canvas.addEventListener("click", function () { return angleTarget += .1; });
function animate() {
    //Compund Angle
    if (angle < angleTarget) {
        angle += 0.01;
    }
    if (angle > angleTarget) {
        angle = angleTarget;
    }
    //Clear
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    //Text
    printName();
    //Rotate
    ctx.translate(canvas.width / 2, canvas.height / 2);
    ctx.rotate(angle * (Math.PI * 2));
    ctx.translate(-canvas.width / 2, -canvas.height / 2);
    //Draw Graphic
    ctx.fillStyle = "#558899";
    ctx.fillRect(canvas.width / 4 - 5, canvas.height / 4 - 5, canvas.width / 2 + 10, canvas.height / 2 + 10);
    ctx.drawImage(video, canvas.width / 4, canvas.height / 4, canvas.width / 2, canvas.height / 2);
    requestAnimationFrame(animate);
    //Rotate back
    ctx.translate(canvas.width / 2, canvas.height / 2);
    ctx.rotate(-angle * (Math.PI * 2));
    ctx.translate(-canvas.width / 2, -canvas.height / 2);
}
function printName() {
    ctx.fillStyle = "black";
    ctx.font = "15px Arial";
    ctx.fillText("aceimnors", canvas.width / 3, canvas.height - 1);
}
function load() {
    video = document.getElementById("video");
    canvas = document.getElementById("canvas");
    ctx = canvas.getContext('2d');
    animate();
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

キャンバスの一部を回転させる

分類Dev

ChromeのHTMLでSVGのPdf.jsキャンバス出力を回転させる方法は?

分類Dev

swt:キャンバスの一部のみを更新(再描画)する方法

分類Dev

Androidの一部のデバイスで、カメラインテントを使用してキャプチャされた画像が回転するのはなぜですか?

分類Dev

キャンバス内の他の要素に影響を与えずに特定の要素を回転させる方法は?

分類Dev

2つの長方形を回転させるキャンバス

分類Dev

キャンバスの一部をクリアする方法は?

分類Dev

CSSを使用してSVGの一部をそれ自体で回転させる方法は?

分類Dev

Androidで変形せずにキャンバス上のビットマップを回転させる方法

分類Dev

Flutter-キャンバスを使用して画像を中心の周りで回転させる方法

分類Dev

HTML5キャンバス:トリミングされた画像を単一のキャンバスの境界内で回転させる

分類Dev

コンテキストを使用してキャンバス内で円弧を回転させる方法は?

分類Dev

キャンバス-垂直/水平画像を正しく回転させる方法は?

分類Dev

画像の中心を中心にキャンバス上の画像を回転させる

分類Dev

Rggplot2のいくつかの変数でラベル軸の一部を回転させる方法

分類Dev

Tkinterキャンバスで正方形を回転させる

分類Dev

Androidでボタンのテキストを回転させる方法は?

分類Dev

ggplotの注釈内のテキストのみを回転させる方法は?

分類Dev

キャンバス-円グラフの形状に関係なく描画された画像を回転させる方法

分類Dev

行キーの一部でHBaseのスキャンをフィルターする方法は?

分類Dev

キャンバスdrawBitmap画像の一部のみ

分類Dev

ctx.drawImageがビデオ要素の一部のみをキャンバスに描画するのはなぜですか?

分類Dev

複数の区切り文字で文字列を分割し、一部のみをキャプチャする方法は?

分類Dev

キャンバスのピボットを横切って(円の中心として)扇形を回転させる方法は?

分類Dev

HTML 5キャンバス上の円の内側で画像を回転させるにはどうすればよいですか?

分類Dev

キャンバス内の画像のみを回転

分類Dev

キャンバス内でスプライトを回転させる

分類Dev

キャンバス上の画像をその移動方向に向けて回転させるにはどうすればよいですか?

分類Dev

クラスjavascriptキャンバスでの線の回転

Related 関連記事

  1. 1

    キャンバスの一部を回転させる

  2. 2

    ChromeのHTMLでSVGのPdf.jsキャンバス出力を回転させる方法は?

  3. 3

    swt:キャンバスの一部のみを更新(再描画)する方法

  4. 4

    Androidの一部のデバイスで、カメラインテントを使用してキャプチャされた画像が回転するのはなぜですか?

  5. 5

    キャンバス内の他の要素に影響を与えずに特定の要素を回転させる方法は?

  6. 6

    2つの長方形を回転させるキャンバス

  7. 7

    キャンバスの一部をクリアする方法は?

  8. 8

    CSSを使用してSVGの一部をそれ自体で回転させる方法は?

  9. 9

    Androidで変形せずにキャンバス上のビットマップを回転させる方法

  10. 10

    Flutter-キャンバスを使用して画像を中心の周りで回転させる方法

  11. 11

    HTML5キャンバス:トリミングされた画像を単一のキャンバスの境界内で回転させる

  12. 12

    コンテキストを使用してキャンバス内で円弧を回転させる方法は?

  13. 13

    キャンバス-垂直/水平画像を正しく回転させる方法は?

  14. 14

    画像の中心を中心にキャンバス上の画像を回転させる

  15. 15

    Rggplot2のいくつかの変数でラベル軸の一部を回転させる方法

  16. 16

    Tkinterキャンバスで正方形を回転させる

  17. 17

    Androidでボタンのテキストを回転させる方法は?

  18. 18

    ggplotの注釈内のテキストのみを回転させる方法は?

  19. 19

    キャンバス-円グラフの形状に関係なく描画された画像を回転させる方法

  20. 20

    行キーの一部でHBaseのスキャンをフィルターする方法は?

  21. 21

    キャンバスdrawBitmap画像の一部のみ

  22. 22

    ctx.drawImageがビデオ要素の一部のみをキャンバスに描画するのはなぜですか?

  23. 23

    複数の区切り文字で文字列を分割し、一部のみをキャプチャする方法は?

  24. 24

    キャンバスのピボットを横切って(円の中心として)扇形を回転させる方法は?

  25. 25

    HTML 5キャンバス上の円の内側で画像を回転させるにはどうすればよいですか?

  26. 26

    キャンバス内の画像のみを回転

  27. 27

    キャンバス内でスプライトを回転させる

  28. 28

    キャンバス上の画像をその移動方向に向けて回転させるにはどうすればよいですか?

  29. 29

    クラスjavascriptキャンバスでの線の回転

ホットタグ

アーカイブ