Rumah hujung hadapan web Tutorial H5 Contoh untuk menerangkan cara menggunakan API Kanvas HTML5 untuk mengendalikan kemahiran tutorial rotation_html5 grafik

Contoh untuk menerangkan cara menggunakan API Kanvas HTML5 untuk mengendalikan kemahiran tutorial rotation_html5 grafik

May 16, 2016 pm 03:45 PM
canvas html5 berputar

Sebagai pembangun web, saya telah bekerja dengan elemen kanvas HTML5. Memaparkan imej adalah cabang besar yang sangat penting dan biasa digunakan Oleh itu, tutorial hari ini adalah mengenai paparan imej kanvas dan cara memutar imej Mungkin ia adalah perkara yang baik yang anda mahukan sekarang.

Secara umumnya, terdapat dua cara untuk memutarkan kanvas: putaran tengah dan putaran titik rujukan. Penggunaan mahir fungsi putaran akan sangat membantu kerja pembangunan anda.

Mengenai putaran tengah objek
Jenis putaran pertama, kita ingin melihat memutar objek mengenai pusatnya. Dilaksanakan menggunakan elemen kanvas, yang merupakan jenis putaran yang paling mudah. Kami menggunakan gambar gorila sebagai bahan untuk eksperimen kami.
Idea asasnya ialah kita perlu memutarkan kanvas di sekeliling titik tengah, memutarkan kanvas, dan kemudian mengembalikan kanvas ke kedudukan asalnya. Jika anda mempunyai sedikit pengalaman dengan enjin grafik, maka ini sepatutnya terdengar biasa. Kodnya mungkin seperti ini: (Klik untuk melihat kesannya)

Kod JavaScriptSalin kandungan ke papan keratan
  1. fungsi onload() {
  2. var kanvas = document.getElementById('c1');
  3. var ctx1 = canvas.getContext('2d');
  4. var
  5. imej1 = baharu Imej(); imej1.onload = fungsi
  6. () {
  7.  // putaran biasa mengenai pusat
  8.  
  9. var
  10. xpos = canvas.width/2;
  11. var ypos = canvas.height/2;
  12. ctx1.drawImage(imej1, xpos - imej1.lebar / 2, ypos - imej1.tinggi / 2);
  13. ctx1.save(); ctx1.translate(xpos, ypos);
  14. ctx1.rotate(47 * Math.PI / 180);
  15. //Putar 47 darjah
  16. ctx1.translate(-xpos, -ypos);
  17. ctx1.drawImage(imej1, xpos - imej1.lebar / 2, ypos - imej1.tinggi / 2);
  18. ctx1.restore();
  19. }
  20. imej1.src =
  21. 'imej.png'
  22. ;
  23. 2016322114126609.gif (383×384)

    Komen sudah sangat terperinci, tetapi saya masih ingin menyebut satu perkara: .save() dan .restore(). Tujuan mereka adalah untuk menyelamatkan kanvas seperti sebelum putaran dan kemudian memulihkannya selepas putaran. Adalah sangat penting untuk mengelakkan konflik dengan rendering lain dengan berkesan Ramai rakan tidak dapat berputar dengan lancar, kebanyakannya disebabkan oleh sebab ini.

    Putar di sekitar titik tertentu
    Jenis kedua ialah untuk memutar imej di sekitar titik tertentu dalam ruang, yang akan menjadi lebih rumit. Tetapi mengapa melakukan ini? Dalam banyak kes, anda perlu memutarkan objek dengan merujuk kepada objek lain, dan satu putaran di sekeliling pusat tidak dapat memenuhi keperluan. Dan yang terakhir lebih biasa digunakan Sebagai contoh, dalam permainan web, putaran sering digunakan.

    2016322114156905.jpg (422×253)
    Kod JavaScriptSalin kandungan ke papan keratan

    1. fungsi onload() {   
    2.     var canvas2 = document.getElementById('c2');   
    3.     var ctx2 = canvas2.getContext('2d');   
    4.     // putaran biasa tentang titik   
    5.     var imej2 = baharu Imej();   
    6.     image2.onload = fungsi() {   
    7.       // putaran biasa tentang satu titik   
    8.       var sudut = 120 * Math.PI / 180; // sudut putaran dalam radian   
    9.       var rx = 300, ry = 200; // putaran x dan y   
    10.       var px = 300, py = 50; // objek berpusat x dan y   
    11.       var jejari = ry - py; // perbezaan dalam kedudukan y atau jejari   
    12.       var dx = rx   jejari * Math.sin(sudut); // cabutan x    
    13.       var dy = ry - radius * Math.cos(angle); // cabutan y   
    14.       ctx2.drawImage(imej2, 300 - imej2.lebar / 2, 50 - imej2.tinggi / 2);   
    15.       ctx2.beginPath();   
    16.       ctx2.arc(300,200,5,0, Math.PI*2,false);   
    17.       ctx2.closePath();   
    18.       ctx2.fillStyle = 'rgba(0,255,0,0.25)';   
    19.       ctx2.fill();   
    20.          
    21.       ctx2.save();   
    22.       ctx2.translate(dx, dy);   
    23.       ctx2.rotate(sudut);   
    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)

    Kod ini mudah, dan fungsinya adalah untuk memutar gambar 120 darjah mengikut titik, menjadikan gambar lebih jelas.

    Melukis logo ajaib
    Ini adalah logo yang saya lihat di Du Niang. Saya bijak menggunakan penjelmaan putaran. . Bukankah logo ini sangat ajaib? Kasut kanak-kanak menggunakan otak mereka dan cuba menyedarinya. Di bawah, berikan kod yang saya gunakan untuk melaksanakannya.

    Kod JavaScriptSalin kandungan ke papan keratan
    1.   
    2. "zh">   
    3.   
    4.     "UTF-8">   
    5.     绘制魔性Logo   
    6.        
    7.   
    8.   
    9. "canvas-warp">   
    10.     "canvas">   
    11.         你的浏览器居然不支持Canvas?!赶快换一个吧!!   
    12.        
      
  24.   
  25.   
  26.     window.onload = fungsi(){   
  27.         var kanvas = document.getElementById("kanvas");   
  28.         canvas.width = 800;   
  29.         canvas.height = 600;   
  30.         var context = canvas.getContext("2d");   
  31.         context.fillStyle = "#FFF";   
  32.         context.fillRect(0,0,800,600);   
  33.   
  34.         untuk(var i=1; i<=10; i ){   
  35.             context.save();   
  36.             context.translate(400,300);   
  37.             context.rotate(36 * i * Math.PI / 180);   
  38.             context.fillStyle = "rgba(255,0,0,0.25)";   
  39.             context.fillRect(0, -200, 200, 200);   
  40.             context.restore();   
  41.         }   
  42.     };   
  43.   
  44.   
  45.   


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

是不是非常的酷?这个图形稍微分析一下发现还是蛮简单的,就是让一个个子(即初始正方形左下角顶点)为圆心进行旋转。


艺术是不是很美妙?大家一定以及体会到了Canvas的奇妙,简简单单的几行小美尽的效果。只要脑洞够大,没有什么是不可以实现的。所以,扬起咱们的艺术家的旗帜,加快步伐,继续前进!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Sempadan Jadual dalam HTML Sempadan Jadual dalam HTML Sep 04, 2024 pm 04:49 PM

Panduan untuk Sempadan Jadual dalam HTML. Di sini kita membincangkan pelbagai cara untuk menentukan sempadan jadual dengan contoh Sempadan Jadual dalam HTML.

Jadual Bersarang dalam HTML Jadual Bersarang dalam HTML Sep 04, 2024 pm 04:49 PM

Ini ialah panduan untuk Nested Table dalam HTML. Di sini kita membincangkan cara membuat jadual dalam jadual bersama-sama dengan contoh masing-masing.

HTML jidar-kiri HTML jidar-kiri Sep 04, 2024 pm 04:48 PM

Panduan untuk HTML margin-kiri. Di sini kita membincangkan gambaran keseluruhan ringkas tentang HTML margin-left dan Contoh-contohnya bersama-sama dengan Pelaksanaan Kodnya.

Susun Atur Jadual HTML Susun Atur Jadual HTML Sep 04, 2024 pm 04:54 PM

Panduan untuk Susun Atur Jadual HTML. Di sini kita membincangkan Nilai Susun Atur Jadual HTML bersama-sama dengan contoh dan output n perincian.

Senarai Tertib HTML Senarai Tertib HTML Sep 04, 2024 pm 04:43 PM

Panduan kepada Senarai Tertib HTML. Di sini kami juga membincangkan pengenalan senarai dan jenis Tertib HTML bersama-sama dengan contoh mereka masing-masing

Memindahkan Teks dalam HTML Memindahkan Teks dalam HTML Sep 04, 2024 pm 04:45 PM

Panduan untuk Memindahkan Teks dalam HTML. Di sini kita membincangkan pengenalan, cara teg marquee berfungsi dengan sintaks dan contoh untuk dilaksanakan.

Butang onclick HTML Butang onclick HTML Sep 04, 2024 pm 04:49 PM

Panduan untuk Butang onclick HTML. Di sini kita membincangkan pengenalan, kerja, contoh dan onclick Event masing-masing dalam pelbagai acara.

Pemegang Tempat Input HTML Pemegang Tempat Input HTML Sep 04, 2024 pm 04:54 PM

Panduan untuk Pemegang Tempat Input HTML. Di sini kita membincangkan Contoh Pemegang Tempat Input HTML bersama-sama dengan kod dan output.

See all articles