Rumah hujung hadapan web Tutorial H5 html5 Tutorial lukisan kanvas (2)—Melukis garis lurus dan menetapkan gaya garisan seperti kemahiran tutorial warna/titik akhir/simpang_html5

html5 Tutorial lukisan kanvas (2)—Melukis garis lurus dan menetapkan gaya garisan seperti kemahiran tutorial warna/titik akhir/simpang_html5

May 16, 2016 pm 03:50 PM
canvas lukis garis lurus barisan

Jika anda masih tidak tahu apa itu Kanvas, anda boleh membaca artikel sebelumnya Semasa belajar melukis, garisan adalah yang paling asas, dan sambungan garisan boleh membentuk sebarang grafik. Perkara yang sama berlaku dalam Kanvas.
Sebelum kita mula, mari keluarkan kanvas dan berus:


Salin kodKodnya adalah seperti berikut :
var cvs = document.getElementById('cvs'); // Kanvas
var ctx = cvs.getContext('2d'); 🎜> Jom lukis Semasa menulis, titik permulaan tidak tetap dan boleh berubah pada bila-bila masa. Walaupun kanvas tidak menentukan titik penulisan dengan tangan, terdapat kaedah, iaitu moveTo. Fungsi moveTo adalah bersamaan dengan mengangkat hujung pen dari kanvas dan kemudian mengalihkannya ke titik yang ditentukan (iaitu, koordinat).




Salin kod
Kodnya adalah seperti berikut: ctx.moveTo(x, y)
Tiada grafik akan dilukis semasa proses ini, yang sama dengan anda memegang pen berjuntai di atas kanvas.
Tetapi tidak ada gunanya berjuntai-juntai, kita perlu mula melukis. Mari kita lukis yang paling mudah dahulu: garis lurus
Kaedah melukis garis lurus ialah lineTo Parameternya adalah sama dengan moveTo, iaitu titik.
ctx.lineTo(x,y) Sudah tentu, apabila anda melukis garisan, titik tulisan juga bergerak, jadi selepas lineTo, titik tulisan menjadi titik sasarannya.





Salin kod
Kodnya adalah seperti berikut: ctx.moveTo(100,100) ;
ctx.lineTo(200,100);

Apabila anda memuat semula halaman web, anda akan mendapati bahawa tiada garis yang dijangkakan pada kanvas, tiada apa-apa. Kerana kita kehilangan satu langkah lineTo sebenarnya adalah "laluan" yang dilukis, yang dengan sendirinya tidak kelihatan. Jika kita mahu dia dipamerkan, kita mesti "melukis" dia.
Pelajar yang pernah menggunakan PS pasti tahu dua mod grafik, satu fill dan satu lagi stroke. Sekarang kita telah melukis garisan, ia bersamaan dengan melukis laluan dalam PS Pada masa ini, kita boleh melukis tepi laluan dan grafik akan dipaparkan.
Kaedah sapuan kanvas ialah sapuan(). Sekarang mari kita lengkapkan kod:





Salin kod
Kod adalah seperti berikut: ctx.moveTo(100,100); ctx.lineTo(200,100); anda boleh Melihat garisan. Sudah tentu, anda juga boleh melukis ratusan laluan secara berterusan, dan kemudian melakukan tindakan strok untuk melukis ratusan garisan sekaligus. Sekarang mari kita lukis segi empat tepat dengan 4 garisan:



Salin kod


Kodnya adalah seperti berikut:
ctx.moveTo(100,100); ; ctx.stroke(); Di sini kita lukis keseluruhan laluan dahulu dan kemudian pukul semuanya sekali.
——–Aduan pengarang: Satu kelemahan lukisan Kanvas ialah ia pada asasnya berdasarkan tekaan, yang sangat tidak intuitif.
Peringatan serius: Proses lukisan kanvas (iaitu mengisi dan mengusap) sangat memakan sumber Jika anda ingin menjimatkan sumber sistem dan meningkatkan kecekapan, adalah lebih baik untuk melukis semua laluan dan kemudian mengisi atau mengusap grafik sekali gus.
Kita boleh lihat daripada grafik di atas bahawa ketebalan garisan lalai ialah 1px dan warna garisan adalah hitam. Sudah tentu kita boleh menetapkannya, tetapi perkara yang pelik ialah menetapkan lebar garis ialah lineWidth, tetapi menetapkan gaya garis dipanggil strokeStyle. Mengapa tidak lineStyle? saya pun tak tahu. :





Salin kod

Kod adalah seperti berikut:


ctx.lineWidth = 10 ;
ctx.strokeStyle = 'rgba(255,0,0,0.5)';
Kod di atas menetapkan lebar garisan kepada 10px dan warna garisan kepada merah lut sinar.

Seperti yang ditunjukkan dalam Rajah 1, muat semula, ada sesuatu yang tidak kena! Mengapa ada sekeping kecil yang hilang di sudut kiri atas? Ini bukan ilusi. Sebabnya bermula dengan kaedah lukisan garisan kanvas.
Soalan: Jika laluan segi empat tepat yang saya lukis mempunyai lebar dan tinggi 100, dan lebar garisan sisi saya ialah 10px, apakah lebar dan tinggi keseluruhan segi empat tepat dengan sisi yang dilukis? Adakah 100 10*2=120?
Jika tepi dilukis sepenuhnya di luar laluan, ia akan menjadi 120. Tetapi Kanvas tidak. Semua garisan dalam Kanvas mempunyai "garisan tengah", yang terletak di tengah-tengah garisan mutlak. Sebagai contoh, jika lebar garisan anda ialah 1, maka garisan tengah ialah 0.5; jika lebarnya ialah 5, maka garisan tengah ialah 2.5; Apabila grafik kanvas diusap, laluan dijajarkan dengan garis tengah garisan dan kemudian diusap. Seperti yang ditunjukkan dalam Rajah 2:

html5 Tutorial lukisan kanvas (2)—Melukis garis lurus dan menetapkan gaya garisan seperti kemahiran tutorial warna/titik akhir/simpang_html5


Jadi, apabila menyurih, separuh daripada garisan berada di bahagian luar dan separuh di bahagian dalam iaitu lebar keseluruhan segi empat tepat di atas ialah 100 (10/2)*2, iaitu bersamaan dengan 110. <.>Itulah sebabnya bahagian kiri atas Ia adalah lumrah untuk sudut kelihatan sumbing. Kerana tiada siapa melukis di sini.
Tetapi mengapa selebihnya sudut tidak bertakuk? Nampak tak pada keempat-empat penjuru gambar anda ada celah?
Itu kerana saya tidak "mengangkat" berus semasa saya melukis garisan Berus itu berterusan, iaitu, tiada pergerakanKe. Jika anda tidak percaya, mari beralihKe sekarang:


Salin kod Kodnya adalah seperti berikut:
ctx.moveTo(100,100); 🎜>ctx.lineTo(100,200); >ctx.stroke();


Kami bergerakKe sebelum melukis baris kedua, dan koordinat moveTo tidak berubah, tetapi selepas menyegarkan, graf menjadi seperti ini. Gambar 3]:




Faham? Kerana kami mengangkat pen.
Sekarang mari padamkan moveTo dan berhenti bimbang tentangnya. Mari kita fikirkan cara mengisi sudut yang hilang di sudut kiri atas?
Pertama sekali, izinkan saya bertanya, adakah laluan kita tertutup? Bukankah ini mengarut? Sudah tentu ia ditutup!
Salah! Ini hanya menjadikan titik terakhir laluan bertepatan dengan titik permulaan, tetapi laluan itu sendiri tidak ditutup!
Bagaimana untuk menutup laluan dalam Kanvas? Gunakan closePath(). ctx.moveTo( 100,100); ctx.closePath( );//Closed path
ctx.lineWidth = 10;

ctx.strokeStyle = 'rgba(255,0,0,0.5)'; >
Segarkan pada masa ini dan ia akan menjadi segi empat sama yang sempurna. Rajah 4:


Setebal mana pun kita buat garisan - lagi tebal garisan, lagi ramai yang suka kan? ————Empat penjuru petak ini ialah sudut tegak sekata dan tidak akan dibulatkan. Bagaimana pula dengan sudut bulat? Sila lihat lejang segi empat sama dalam PS, Rajah 5:


Seperti yang anda lihat, semakin tebal tepi, semakin besar lengkok sudutnya.
Jika saya mahu tepi dalam Canvas sama dengan yang ada di PS, adakah caranya? Sudah tentu, ia adalah atribut lineJoin.
lineJoin, bermaksud persilangan garisan, mempunyai tiga sifat: miter (lalai, sudut tajam), bevel (serong), bulat (bucu bulat), seperti yang ditunjukkan dalam Rajah 6:

Di sana tidak syak lagi bahawa kita dapat memahami sekali gus bahawa segi empat tepat kita mempunyai bucu tajam, jadi cuba ubahnya kepada bucu bulat:
Grafik menjadi seperti ini, Rajah 7:

Sedikit seperti PS , betul tak?
Selain itu, dari gambar sebelum ini, kita tahu bahawa hujung garisan Kanvas adalah rata. Bolehkah ini diubah? Lagipun, ia rata dan tidak kelihatan baik.
juga mungkin, iaitu atribut lineCap, yang mentakrifkan titik akhir baris. lineCap mempunyai 3 nilai: punggung (rata, lalai), bulat (bulatan), persegi (segi empat sama), seperti yang ditunjukkan dalam Rajah 8

Anda boleh mengetahui dengan melihat gambar yang sebenarnya kepala rata dan kepala segi empat sama sahaja. Kedua-dua kepala bulat dan kepala persegi akan menonjol untuk seketika. Itu separuh daripada lebar garisan.
Adakah anda terfikir sesuatu? Haha, untuk masalah laluan tertutup sebelum ini, jika kita set lineCap kepada kepala persegi, kesannya akan sama!
Tetapi demi keselamatan, kita masih perlu menutup laluan, ingat!
Saya juga ingin mengingatkan anda: laluan tertutup tidak mempunyai titik akhir! Oleh itu, gaya titik akhir tidak boleh dilihat pada laluan tertutup.
Juga: lineCap agak serupa dengan lineJoin, berhati-hati agar tidak mengelirukan mereka.
Jika anda mempunyai mata yang tajam dan tidak bernasib baik, anda mungkin mendapati kadangkala garisan 1 piksel tidak lebar 1 piksel, tetapi kelihatan lebih luas dan kabur. Seperti yang ditunjukkan dalam Rajah 9:

Tahniah anda telah menemui pepijat yang bukan pepijat. Ini sangat istimewa saya akan membincangkannya dalam artikel seterusnya.
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

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu 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)

Apakah pemalam anak panah kanvas? Apakah pemalam anak panah kanvas? Aug 21, 2023 pm 02:14 PM

Pemalam anak panah kanvas termasuk: 1. Fabric.js, yang mempunyai API yang ringkas dan mudah digunakan serta boleh mencipta kesan anak panah tersuai 2. Konva.js, yang menyediakan fungsi melukis anak panah dan boleh mencipta pelbagai anak panah gaya; 3. Pixi.js , yang menyediakan fungsi pemprosesan grafik yang kaya dan boleh mencapai pelbagai kesan anak panah; ; 6. Rough .js, anda boleh membuat anak panah yang dilukis dengan tangan, dsb.

Apakah versi html2canvas yang ada? Apakah versi html2canvas yang ada? Aug 22, 2023 pm 05:58 PM

Versi html2canvas termasuk html2canvas v0.x, html2canvas v1.x, dsb. Pengenalan terperinci: 1. html2canvas v0.x, yang merupakan versi awal html2canvas Versi stabil terkini ialah v0.5.0-alpha1. Ia adalah versi matang yang telah digunakan secara meluas dan disahkan dalam banyak projek;

Apakah butiran jam kanvas? Apakah butiran jam kanvas? Aug 21, 2023 pm 05:07 PM

Butiran jam kanvas termasuk penampilan jam, tanda semak, jam digital, jam, minit dan jarum kedua, titik tengah, kesan animasi, gaya lain, dsb. Pengenalan terperinci: 1. Penampilan jam, anda boleh menggunakan Kanvas untuk melukis dail bulat sebagai penampilan jam, dan anda boleh menetapkan saiz, warna, jidar dan gaya dail lain. 2. Garisan skala, lukis garisan skala; dail untuk mewakili jam atau minit. 3. Jam digital, anda boleh melukis jam digital pada dail untuk menunjukkan jam dan minit semasa

Apakah sifat yang dimiliki oleh tkinter canvas? Apakah sifat yang dimiliki oleh tkinter canvas? Aug 21, 2023 pm 05:46 PM

Atribut kanvas tkinter termasuk bg, bd, relief, lebar, ketinggian, kursor, latar belakang sorotan, warna sorotan, ketebalan sorotan, latar belakang sisipan, lebar sisipan, latar belakang pilih, latar belakang pilih, atribut perintah xscroll, dsb. Pengenalan terperinci

uniapp melaksanakan cara menggunakan kanvas untuk melukis carta dan kesan animasi uniapp melaksanakan cara menggunakan kanvas untuk melukis carta dan kesan animasi Oct 18, 2023 am 10:42 AM

Cara menggunakan kanvas untuk melukis carta dan kesan animasi dalam uniapp memerlukan contoh kod khusus 1. Pengenalan Dengan populariti peranti mudah alih, semakin banyak aplikasi perlu memaparkan pelbagai carta dan kesan animasi pada terminal mudah alih. Sebagai rangka kerja pembangunan merentas platform berdasarkan Vue.js, uniapp menyediakan keupayaan untuk menggunakan kanvas untuk melukis carta dan kesan animasi. Artikel ini akan memperkenalkan cara uniapp menggunakan kanvas untuk mencapai kesan carta dan animasi serta memberikan contoh kod khusus. 2. kanvas

Ketahui rangka kerja kanvas dan terangkan rangka kerja kanvas yang biasa digunakan secara terperinci Ketahui rangka kerja kanvas dan terangkan rangka kerja kanvas yang biasa digunakan secara terperinci Jan 17, 2024 am 11:03 AM

Terokai rangka kerja Kanvas: Untuk memahami apakah rangka kerja Kanvas yang biasa digunakan, contoh kod khusus diperlukan Pengenalan: Kanvas ialah API lukisan yang disediakan dalam HTML5, yang melaluinya kita boleh mencapai kesan grafik dan animasi yang kaya. Untuk meningkatkan kecekapan dan kemudahan melukis, banyak pembangun telah membangunkan rangka kerja Kanvas yang berbeza. Artikel ini akan memperkenalkan beberapa rangka kerja Kanvas yang biasa digunakan dan menyediakan contoh kod khusus untuk membantu pembaca memperoleh pemahaman yang lebih mendalam tentang cara menggunakan rangka kerja ini. 1. Rangka kerja EaselJS Ea

Terokai peranan berkuasa dan aplikasi kanvas dalam pembangunan permainan Terokai peranan berkuasa dan aplikasi kanvas dalam pembangunan permainan Jan 17, 2024 am 11:00 AM

Fahami kuasa dan aplikasi kanvas dalam pembangunan permainan Gambaran Keseluruhan: Dengan perkembangan pesat teknologi Internet, permainan web menjadi semakin popular di kalangan pemain. Sebagai bahagian penting dalam pembangunan permainan web, teknologi kanvas telah muncul secara beransur-ansur dalam pembangunan permainan, menunjukkan kuasa dan aplikasinya yang berkuasa. Artikel ini akan memperkenalkan potensi kanvas dalam pembangunan permainan dan menunjukkan aplikasinya melalui contoh kod tertentu. 1. Pengenalan kepada teknologi kanvas Kanvas ialah elemen baharu dalam HTML5, yang membolehkan kami menggunakan

Untuk gaya manakah html2canvas tidak sah? Untuk gaya manakah html2canvas tidak sah? Nov 24, 2023 pm 03:25 PM

Gaya tidak sah termasuk animasi dan peralihan CSS3, kesan penapis CSS, grafik dan laluan kompleks CSS3, beberapa ciri CSS3, elemen pseudo dan beberapa ciri CSS, indeks Z, imej latar belakang dan kecerunan, dsb. Pengenalan terperinci: 1. Animasi dan peralihan CSS3: html2canvas mungkin tidak menangkap sepenuhnya animasi CSS3 dan kesan peralihan. Walaupun percubaan akan dibuat untuk menangkap gaya terakhir, animasi dan peralihan ini mungkin hilang semasa proses penukaran 2. Kesan penapis CSS: penapis seperti kabur dan bayang mungkin tidak dikekalkan semasa proses penukaran, dsb.

See all articles