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

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

May 16, 2016 pm 03:45 PM
canvas html5 回転させる

私は 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 の奇妙に到達し、単純な単一の実行コードで最大限の効果を実現できます。


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

HTML のネストされたテーブル HTML のネストされたテーブル Sep 04, 2024 pm 04:49 PM

これは、HTML でのネストされたテーブルのガイドです。ここでは、テーブル内にテーブルを作成する方法をそれぞれの例とともに説明します。

HTMLの表の境界線 HTMLの表の境界線 Sep 04, 2024 pm 04:49 PM

HTML の表の境界線に関するガイド。ここでは、HTML でのテーブルの境界線の例を示しながら、テーブル境界線を定義する複数の方法について説明します。

HTML 左マージン HTML 左マージン Sep 04, 2024 pm 04:48 PM

HTML マージン左のガイド。ここでは、HTML margin-left の概要とその例、およびそのコード実装について説明します。

HTML テーブルのレイアウト HTML テーブルのレイアウト Sep 04, 2024 pm 04:54 PM

HTML テーブル レイアウトのガイド。ここでは、HTML テーブル レイアウトの値と例および出力について詳しく説明します。

HTML 順序付きリスト HTML 順序付きリスト Sep 04, 2024 pm 04:43 PM

HTML 順序付きリストのガイド。ここでは、HTML 順序付きリストと型の導入とその例についても説明します。

HTML 内のテキストの移動 HTML 内のテキストの移動 Sep 04, 2024 pm 04:45 PM

HTML でのテキストの移動に関するガイド。ここでは、概要、マーキー タグが構文でどのように機能するか、および実装例について説明します。

HTML入力プレースホルダー HTML入力プレースホルダー Sep 04, 2024 pm 04:54 PM

HTML 入力プレースホルダーのガイド。ここでは、コードと出力とともに HTML 入力プレースホルダーの例について説明します。

HTML の onclick ボタン HTML の onclick ボタン Sep 04, 2024 pm 04:49 PM

HTML オンクリック ボタンのガイド。ここでは、それらの紹介、動作、例、およびさまざまなイベントでの onclick イベントについてそれぞれ説明します。

See all articles