ホームページ > ウェブフロントエンド > H5 チュートリアル > HTML5 Canvas API を使用してグラフィックスを操作する方法を説明する例 回転_html5 チュートリアル スキル

HTML5 Canvas API を使用してグラフィックスを操作する方法を説明する例 回転_html5 チュートリアル スキル

WBOY
リリース: 2016-05-16 15:45:24
オリジナル
1939 人が閲覧しました

私は Web 開発者として、HTML5 の Canvas 要素を扱ってきました。画像のレンダリングは非常に重要で一般的に使用される大きな分岐であるため、今日のチュートリアルは、キャンバス画像の表示と画像の回転方法についてです。

一般に、キャンバスを回転するには、中心回転と基準点回転の 2 つの方法があります。回転機能を上手に活用すれば、開発作業に大いに役立ちます。

オブジェクトの中心の回転について
最初のタイプの回転では、オブジェクトをその中心を中心に回転させることを考えます。最も単純なタイプの回転である Canvas 要素を使用して実装されます。実験の素材としてゴリラの写真を使いました。
基本的な考え方は、中心点を中心にキャンバスを回転し、キャンバスを回転してから、キャンバスを元の位置に戻す必要があるということです。グラフィックス エンジンの経験があれば、これには馴染みがあるはずです。コードはおそらく次のようになります: (クリックして効果を確認します)

JavaScript コードコンテンツをクリップボードにコピーします
  1. 関数 onload() {
  2. var Canvas = document.getElementById('c1');
  3. var ctx1 = Canvas.getContext('2d');
  4. var
  5. image1 = new Image(); image1.onload = function
  6. () {
  7. // 中心を中心とした定期的な回転
  8. var
  9. xpos = Canvas.width/2;
  10. var ypos = Canvas.height/2;
  11. ctx1.drawImage(image1, xpos - image1.width / 2, ypos - image1.height / 2);
  12. ctx1.save(); ctx1.translate(xpos, ypos);
  13. ctx1.rotate(47 * Math.PI / 180);
  14. //47 度回転
  15. ctx1.translate(-xpos, -ypos);
  16. ctx1.drawImage(image1, xpos - image1.width / 2, ypos - image1.height / 2);
  17. ctx1.restore(); }
  18. image1.src =
  19. 'image.png'
  20. ;
  21. }
  22. 2016322114126609.gif (383×384)

    コメントはすでに非常に詳細に書かれていますが、まだ 1 つだけ言及したいことがあります。それは .save() と .restore() です。その目的は、キャンバスを回転前の状態で保存し、回転後に復元することです。他のレンダリングとの競合を効果的に回避することが非常に重要です。主にこの理由により、多くの友人がスムーズに回転できませんでした。

    特定の点を中心に回転
    2 番目のタイプは、空間内の特定の点を中心に画像を回転するものですが、これはより複雑になります。しかし、なぜこれを行うのでしょうか?多くの場合、別のオブジェクトを参照してオブジェクトを回転する必要がありますが、中心を中心とした 1 回の回転ではニーズを満たすことができません。たとえば、Web ゲームでは後者がよく使用されます。

    2016322114156905.jpg (422×253)
    JavaScript コードコンテンツをクリップボードにコピーします

    1. 関数 onload() {
    2. var canvas2 = document.getElementById('c2');   
    3. var ctx2 = canvas2.getContext('2d');   
    4. // 点
    5. を中心とした定期的な回転
    6. var image2 = new Image();   
    7. image2.onload = 関数() {
    8. // 点を中心とした定期的な回転
    9. var angle = 120 * Math.PI / 180; // 回転角度(ラジアン)
    10. var rx = 300、 ry = 200; // 回転 x および y
    11. var px = 300, py = 50; // オブジェクトの中心 x と y
    12. var radius = ry - py; // y 位置の差 または 半径
    13. var dx = rx radius * Math.sin(angle); // ドロー x
    14. var dy = ry - radius * Math.cos(angle); // ドロー y
    15. ctx2.drawImage(image2, 300 - image2.width / 2, 50 - image2.height / 2);   
    16. ctx2.beginPath();   
    17. ctx2.arc(300,200,5,0,Math.PI*2,false);   
    18. ctx2.closePath();   
    19. ctx2.fillStyle = 'rgba(0,255,0,0.25)';   
    20. ctx2.fill();   
    21. ctx2.save();   
    22. ctx2.translate(dx, dy);   
    23. ctx2.rotate(angle);   
    24. ctx2.translate(-dx, -dy);   
    25. ctx2.drawImage(image2, dx - image2.width / 2, dy - image2.height / 2);   
    26. ctx2.restore();   
    27. }
    28. image2.src = 'smallimage.png';   
    29. }

    2016322114243019.gif (614×416)

    コードはシンプルで、その機能は、点に応じて画像を 120 度回転し、画像をより鮮明にすることです。

    魔法のロゴを描く
    これはDu Niangで見たロゴです。非常に単純な長方形を回転変換によって非常に美しいロゴに変換しました。 。このロゴはとても幻想的だと思いませんか?子ども靴は頭を使って実現しようとします。以下に、実装に使用したコードを示します。

    JavaScript コードコンテンツをクリップボードにコピーします
    1.   
    2. "zh">   
    3.   
    4.     "UTF-8">   
    5.     绘制魔性Logo   
    6.        
    7.   
    8.   
    9. "canvas-warp">   
    10.     "canvas">   
    11.         你的浏览器居然不支持Canvas?!赶快换一个吧!!   
    12.        
      
  23. <スクリプト>   
  24. window.onload = 関数(){
  25. var canvas = document.getElementById("canvas");   
  26. canvas.width = 800;   
  27. canvas.height = 600;   
  28. var context = canvas.getContext("2d");   
  29. context.fillStyle = "#FFF";   
  30. context.fillRect(0,0,800,600);   
  31. for(var i=1; i<=10; i ){
  32. context.save();   
  33. context.translate(400,300);   
  34. context.rotate(36 * i * Math.PI / 180);   
  35. context.fillStyle = "rgba(255,0,0,0.25)";   
  36. context.fillRect(0, -200, 200, 200);   
  37. context.restore();   
  38. }
  39. };   
  40.   
  41.   
  42.   

运行結果:
2016322114315247.jpg (417×318)

は必ずしも異常な酷さではありませんか? この図の形式を分析すると、非常に単一的であることが判明しました。つまり、画面の中心 (つまり、最初の正方形の左下角の点) を中心に回転していることがわかります。

アプローチは、超美妙ではありませんか? 大家および人々が Canvas の奇妙に到達し、単純な単一の実行コードで最大限の効果を実現できます。


関連ラベル:
ソース:php.cn
前の記事:SVG を使用して読み込みアニメーション HTML5 チュートリアル スキルを作成する方法を説明する例 次の記事:HTML5 タッチイベントの進化 タップイベントの紹介_html5 チュートリアル スキル
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
関連トピック
詳細>
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート