Rumah >hujung hadapan web >Tutorial H5 >Tutorial menggunakan Kanvas HTML5 untuk mengisi imej dengan warna dan tekstur_html5 petua tutorial

Tutorial menggunakan Kanvas HTML5 untuk mengisi imej dengan warna dan tekstur_html5 petua tutorial

WBOY
WBOYasal
2016-05-16 15:45:332663semak imbas

Warna Isian

Seni tidak dapat dipisahkan daripada warna Hari ini kami akan memperkenalkan warna pengisian dan mengalami pesona warna.
Terdapat dua jenis warna isian utama:

1. Warna asas
2. Warna kecerunan (juga dibahagikan kepada kecerunan linear dan kecerunan jejarian)

Mari kita lihat satu persatu.


Isi warna asas
Sifat Canvas fillStyle digunakan untuk menetapkan warna asas dan isian bentuk pada kanvas. fillStyle menggunakan nama warna yang ringkas. Ini kelihatan sangat mudah, contohnya:

Kod JavaScriptSalin kandungan ke papan keratan
  1. context.fillStyle = "merah";

Berikut ialah senarai enam belas nilai rentetan warna yang tersedia daripada spesifikasi HTML4. Memandangkan HTML5 tidak mengubah suai warna eksklusif, warna HTML4 boleh dipaparkan dengan betul dalam HTML5.
2016321111603054.png (664×656)

Semua nilai warna ini boleh digunakan pada sifat strokeStyle dan fillStyle.
Baiklah, saya ringkaskan kaedah mengisi warna asas: (boleh juga digunakan untuk atribut strokeStyle)
(1) Gunakan pengisian rentetan warna.

Kod JavaScriptSalin kandungan ke papan keratan
  1. context.fillStyle = "merah";

(2) Gunakan padding rentetan digit heksadesimal.

Kod JavaScriptSalin kandungan ke papan keratan
  1. context.fillStyle = "#FF0000"

(3) Isikan dengan singkatan rentetan digit heksadesimal.

Kod JavaScriptSalin kandungan ke papan keratan
  1. context.fillStyle = "#F00";
(4) Gunakan kaedah rgb() untuk menetapkan warna.


Kod JavaScript
Salin kandungan ke papan keratan
    context.fillStyle =
  1. "rgb(255,0,0)"; (5) Gunakan kaedah rgba() untuk menetapkan warna.
  2. Kod JavaScript
Salin kandungan ke papan keratan


context.fillStyle =
"rgba(255,0,0,1)"
  1. ; Parameter terakhir kaedah ini ialah nilai alfa dan julat ketelusan ialah 1 (legap) ~ 0 (telus). (6) Gunakan kaedah hsl() untuk menetapkan warna.
  2. Kod JavaScript
Salin kandungan ke papan keratan


context.fillStyle = "hsl(0,100%,50%)"
;
  1. HSL mewakili warna tiga saluran rona (H), ketepuan (S) dan kecerahan (L). (7) Gunakan kaedah hsla() untuk menetapkan warna. Kod JavaScriptSalin kandungan ke papan keratan


context.fillStyle =
"hsla(0,100%,50%,1)"
  1. 7 ayat kod di atas semuanya diisi dengan "#FF0000" berwarna merah.


    Bentuk Kecerunan Isi
    Terdapat dua pilihan asas untuk mencipta isian kecerunan pada kanvas: linear atau jejari. Kecerunan linear mencipta corak isian mendatar, menegak atau pepenjuru. Kecerunan jejari mencipta isian jejari dari titik tengah. Terdapat tiga langkah untuk mengisi bentuk kecerunan: tambahkan garisan kecerunan, tambahkan warna kekunci pada garisan kecerunan dan gunakan kecerunan. Berikut adalah beberapa contoh daripada mereka.
    Kecerunan Linear
    Strategi Tiga Langkah:
    Tambah Garis Kecerunan:

    Kod JavaScriptSalin kandungan ke papan keratan
    1. var grd = context.createLinearGradient(xstart,ystart,xend,yend);
    Tambahkan warna kekunci pada garisan kecerunan (serupa dengan titik putus warna):



    Kod JavaScript
    Salin kandungan ke papan keratan
      grd.addColorStop(berhenti,warna);
    1. Perhentian di sini ialah nombor titik terapung dari 0 hingga 1, yang mewakili perkadaran jarak dari titik putus ke (xstart, ystart) kepada keseluruhan panjang kecerunan.
    Gunakan kecerunan:


    Kod JavaScript

    Salin kandungan ke papan keratan

    context.fillStyle = grd;
    context.strokeStyle = grd;
    1. Tulis kod untuk melihatnya.
    2. Kod JavaScript
    Salin kandungan ke papan keratan

    1. "zh">
    2. "UTF-8">
    3. Isi kecerunan linear
    4. "canvas-warp">
    5. "kanvas"
    6. style="sempadan: 1px pepejal #aaaaa; paparan: blok; jidar: 50px auto ;"
    7. > Penyemak imbas anda tidak menyokong Kanvas? ! Cepat tukar! !
    window.onload =
  2. fungsi(){
  3. var kanvas = document.getElementById(
  4. "kanvas");
  5. kanvas.lebar = 800; kanvas.tinggi = 600;
  6. var konteks = canvas.getContext("2d"
  7. ); context.rect(200,100,400,400);
  8.  //Tambah garisan kecerunan
  9. var grd = context.createLinearGradient(200,300,600,300);  
  10. //Tambah titik putus warna
  11. grd.addColorStop(0,
  12. "hitam");
  13. grd.addColorStop(0.5,"putih");
  14. grd.addColorStop(1,"hitam");
  15.  //Gunakan kecerunan
  16. context.fillStyle = grd; context.fill();
  17. }
  18. Hasil jalankan:
    2016321112313533.jpg (850×500)

    Saya rasa perlu membuat ilustrasi supaya semua orang boleh memahami kecerunan pada satu masa.
    2016321112349410.jpg (850×500)

    Untuk memudahkan pemahaman, adalah disyorkan untuk menganggap garis kecerunan sebagai segmen garis terarah. Jika anda biasa dengan alat lukisan seperti PS dan telah menggunakan tetapan kecerunan, anda harus memahaminya dengan baik.
    Titik permulaan dan titik akhir garis kecerunan di sini tidak perlu berada dalam imej, dan kedudukan titik putus warna adalah sama. Tetapi jika julat imej lebih besar daripada garis kecerunan, maka di luar julat garis kecerunan, warna titik putus yang paling hampir dengan titik akhir akan diisi secara automatik.
    Berikut ialah satu lagi contoh dengan dua fungsi tambahan.

    Cara cepat untuk melukis segi empat tepat

    Kod JavaScriptSalin kandungan ke papan keratan
    1. fillRect(x,y,width,height)、stroke(x,y,width,height)。这两个函数可以分别看做rect()与fill()以及rect()与stroke()的组合。因为rect()仅仅只是规划路径而已,而这两个方法确实实实在在的绘制。   
    2.   
    3. "zh">   
    4.   
    5.     "UTF-8">   
    6.     填充线性渐变   
    7.   
    8.   
    9. "canvas-warp">   
    10.     "canvas" style="border: 1px solid #aaaaaa; display: block; margin: 50px auto;">   
    11.         你的浏览器居然不支持Canvas?!赶快换一个吧!!   
    12.        
  19. window.onload =
  20. fungsi(){
  21. var kanvas = document.getElementById("kanvas"); kanvas.lebar = 800;
  22. kanvas.tinggi = 600;
  23. var
  24. konteks = canvas.getContext(
  25. "2d"
  26. );  //Tambah garisan kecerunan
  27. var grd = context.createLinearGradient(100,300,700,300);
  28.  //Tambah titik putus warna
  29. grd.addColorStop(0,
  30. "zaitun"
  31. ); grd.addColorStop(0.25,
  32. "maroon"
  33. ); grd.addColorStop(0.5,"aqua"
  34. );
  35. grd.addColorStop(0.75,"fuchsia"
  36. grd.addColorStop(0.25,"teal");
  37.  //Gunakan kecerunan
  38. context.fillStyle = grd; context.strokeStyle = grd;
  39. context.strokeRect(200,50,300,50); context.strokeRect(200,100,150,50); context.strokeRect(200,150,450,50);
  40. context.fillRect(200,300,300,50);
  41. context.fillRect(200,350,150,50);
  42. context.fillRect(200,400,450,50);
  43. context.fillRect(0,550,800,25);
  44. }
  45. Hasil jalankan:
    2016321113029539.jpg (850×500)

    Kedua-dua halaman mempunyai kecerunan mendatar, tetapi harus jelas bahawa kecerunan linear tidak semestinya mendatar, dan arahnya boleh sewenang-wenangnya.

    Kecerunan Jejari
    Ia juga merupakan strategi tiga langkah, tetapi kaedah yang digunakan pada langkah pertama telah berubah.
    Tambah bulatan kecerunan:

    Kod JavaScriptSalin kandungan ke papan keratan
    1. var grd = context.createRadialGradient(x0,y0,r0,x1,y1,r1);
    Tambahkan warna kekunci pada garisan kecerunan (serupa dengan titik putus warna):


    Kod JavaScript
    Salin kandungan ke papan keratan
      grd.addColorStop(berhenti,warna);
    1. Gunakan kecerunan:

    Kod JavaScript

    Salin kandungan ke papan keratan

    context.fillStyle = grd;
    context.strokeStyle = grd;
    1. Kecerunan linear ditakrifkan berdasarkan dua titik akhir, tetapi kecerunan jejari ditakrifkan berdasarkan dua bulatan.
    2. Mari kita tulis semula Contoh 7-2.
    Kod JavaScript

    Salin kandungan ke papan keratan

    1. "zh">
    2. "UTF-8">
    3. Isi Kecerunan Radial
    4. "canvas-warp">
    5. "kanvas"
    6. style="sempadan: 1px pepejal #aaaaa; paparan: blok; jidar: 50px auto ;"
    7. > Penyemak imbas anda tidak menyokong Kanvas? ! Cepat tukar! !
    window.onload =
  46. fungsi(){
  47. var kanvas = document.getElementById(
  48. "kanvas");
  49. kanvas.lebar = 800; kanvas.tinggi = 600;
  50. var konteks = canvas.getContext("2d"
  51. );  //Tambah garisan kecerunan
  52. var grd = context.createRadialGradient(400,300,100,400,300,200);
  53.  //Tambah titik putus warna
  54. grd.addColorStop(0,"zaitun"
  55. ); grd.addColorStop(0.25,"maroon"
  56. ); grd.addColorStop(0.5,"aqua");
  57. grd.addColorStop(0.75,"fuchsia"
  58. grd.addColorStop(0.25,"teal"
  59. );  
  60. //Gunakan kecerunan context.fillStyle = grd;
  61. context.fillRect(100,100,600,400);
  62. }
  63. Hasil jalankan:
    2016321113454037.jpg (850×500)

    Kenapa anda rasa kombinasi warna ini sangat...lupakan, ini namanya seni.
    createRadialGradient(x0,y0,r0,x1,y1,r1); kaedah menentukan julat mula dan akhir kecerunan jejari, iaitu, kecerunan antara dua bulatan.
    Untuk meringkaskan, dalam pelajaran ini kita belajar tentang fillStyle, createLinearGradient(), createRadialGradient(), addColorStop(), fillRect(), strokeRect() dan atribut dan kaedah lain, serta memperkenalkan secara terperinci pengisian warna asas, linear kecerunan, dan kecerunan jejari.
    Baiklah, sekarang kita telah belajar mewarna, mari gunakan warna sepuas hati dan lukis karya seni kita sendiri!

    Tekstur isi

    Pengenalan kepada createPattern()
    Tekstur sebenarnya adalah pengulangan corak dan corak isian dimulakan melalui fungsi createPattern(). Ia perlu memasukkan dua parameter createPattern(img,repeat-style), yang pertama ialah contoh objek Imej, dan parameter kedua ialah jenis String, yang menunjukkan cara memaparkan corak ulangan dalam bentuk. Anda boleh menggunakan fungsi ini untuk memuatkan imej atau keseluruhan kanvas sebagai corak isian untuk sesuatu bentuk.
    Terdapat 4 jenis isian imej berikut:

    1. Ulang pada satah: ulang
    2 ulang pada paksi-x: ulangi pada paksi-y tidak menggunakan ulangan: tidak- ulang;

    Malah, parameter pertama createPattern() juga boleh dihantar dalam objek kanvas atau objek video Di sini kami hanya menerangkan objek Imej, dan anda boleh mencuba yang lain sendiri.

    Buat dan isi corak
    Pertama lihat cara memuatkan imej:
    Buat objek Imej

    Nyatakan sumber imej untuk objek Imej


    Kod adalah seperti berikut:


    Kod JavaScript
    Salin kandungan ke papan keratan
    1. var img = baharu Imej(); //Buat objek Imej
    2. img.src =
    3. "8-1.jpg"; //Nyatakan sumber imej untuk objek Imej
    Sambungan: Laluan relatif dalam HTML
    '../direktori atau nama fail' atau 'direktori atau nama fail' merujuk kepada laluan direktori di mana fail yang dikendalikan sekarang berada

    '../ direktori atau nama fail' Ia merujuk kepada laluan direktori di atas direktori di mana fail yang dikendalikan sekarang berada

    Isi tekstur selepas itu:


    Kod JavaScript
    Salin kandungan ke papan keratan
    1. var corak = context.createPattern(img,"ulang" ); context.fillStyle = corak;
    2. Jom lihat terus program lengkap Di sini saya ingin berulang kali mengisi zirafah comel ini sebagai tekstur. Perlu diingatkan bahawa apabila memilih gambar, anda mesti memilih gambar yang berkomunikasi antara satu sama lain dari kiri ke kanan dan dari atas ke bawah sebagai tekstur, supaya tidak akan ada sambungan pendek yang tidak wajar.
    Kod disediakan di bawah.


    2016321113732587.jpg (321×400)Kod JavaScript

    Salin kandungan ke papan keratan

    1. "zh">
    2. "UTF-8"
    3. > Fülltextur
    4. "canvas-warp">
    5. "canvas"
    6. style="border: 1px solid #aaaaaa; display: block; margin: 50px auto ;">
    7. Ihr Browser unterstützt Canvas nicht? ! Ändere es schnell! !
  64. <script> <span></span> window.onload = </li> <li>function<span></span>(){ </li> <li class="alt"> <span></span> </li> <li>var<span></span> canvas = document.getElementById(</li> <li class="alt">"canvas"<span></span>); <span class="keyword"></span> <span></span> canvas.width = 800; </li> <li> <span></span>canvas.height = 600;<span class="keyword"></span> <span></span> <span class="string"></span>var<span></span> context = canvas.getContext(</li> <li class="alt">"2d"<span></span> </li> <li> <span></span> </li> <li class="alt"> <span></span> <span class="keyword"></span>var<span></span> img = <span class="string"></span>new<span></span> Image(); </li> <li> <span></span> img.src = </li> <li class="alt">"8-1.jpg"<span></span>; <span class="keyword"></span> img.onload = <span></span>Funktion<span class="keyword"></span>(){ <span></span> </li> <li> <span></span>var<span class="string"></span> pattern = context.createPattern(img, <span></span>"repeat"</li> <li class="alt">); <span></span> <span class="keyword"></span> context.fillStyle = Muster <span></span> </li> <li> context.fillRect(0,0,800,600); <span></span> <span class="keyword"></span>                                                              <span></span> <span class="string"></span> <span></span> } </li> <li class="alt"> <span></span></script>
  65. Laufergebnis:
  66. Hier wird das Onload-Ereignis von Image verwendet. Seine Funktion besteht darin, das Bild vorab zu laden, dh der Codekörper der nachfolgenden Funktion wird sofort nach dem Laden des Bildes entfernt. Dies ist notwendig, denn wenn es nicht geschrieben wird, wird auf der Leinwand ein schwarzer Bildschirm angezeigt. Da die Textur gefüllt wird, ohne auf das Laden des Bildes zu warten, kann der Browser das Bild nicht finden. Hier wird „Wiederholen“ verwendet. Kinderschuhe können auch die anderen drei Werte ausprobieren, um zu sehen, welche unterschiedlichen Auswirkungen es gibt. Sie können auch andere Bilder finden, die Sie ausfüllen und den Effekt sehen können.
Kenyataan:
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
Artikel sebelumnya:Muat naik mampatan imej pada pelayar html5 kanvas mudah alih_html5 kemahiran tutorialArtikel seterusnya:Muat naik mampatan imej pada pelayar html5 kanvas mudah alih_html5 kemahiran tutorial

Artikel berkaitan

Lihat lagi