


html5 Tutorial lukisan kanvas (3)—Sebab garis 1 piksel dikaburkan pada kemahiran tutorial canvas_html5
Bersambung daripada artikel sebelum ini Tutorial lukisan garisan kanvas
Seperti yang kami nyatakan kali lepas, kanvas kadangkala mempunyai 1 garisan piksel yang kabur dan kelihatan lebih lebar, seperti yang ditunjukkan di bawah:
Barisan sebegitu jelas bukan yang kita mahukan.
Tujuan artikel ini adalah untuk menjelaskan prinsip dan menyelesaikannya.
Semua orang tahu bahawa saiz paparan terkecil pada skrin ialah 1 piksel Walaupun perkara yang lebih kecil daripada 1 piksel mungkin tidak dipaparkan, komputer tidak peduli, ia akan cuba melukisnya.
Malah, piksel juga merupakan satu unit Apa yang akan berlaku jika kita membesarkan kanvas kepada saiz yang cukup besar untuk melihat setiap piksel dengan jelas? Ia mungkin kelihatan seperti ini:
Setiap piksel mempunyai julat permulaan dan penamat, seperti yang ditunjukkan dalam rajah, julatnya bermula dari kiri, menjangkau 1 piksel dan berakhir di sebelah kanan.
Jika kita mengikuti julat permulaan dan akhir piksel semasa melukis garisan 1 piksel, maka kita pasti akan mendapat garis nipis yang sangat standard. Seperti berikut:
Tetapi malangnya, kaedah lukisan garisan kanvas adalah berbeza Seperti yang telah kami katakan dalam artikel sebelum ini, setiap baris kanvas mempunyai "garis tengah" yang sangat nipis dan lebar garisan memanjang dari garisan tengah ke kedua-duanya. sisi. Jika kita masih melukis garisan dari piksel kedua, maka garis tengah garisan akan diselaraskan dengan titik permulaan piksel kedua, dan kemudian kita mula melukis, dan masalah timbul: garis Kanvas memanjang ke kedua-dua sisi daripada garisan tengah daripada memanjang ke bahagian tertentu (contohnya, di sini, jika ia hanya memanjang ke kanan, maka masalah kita tidak lagi menjadi masalah), selepas memanjang, garisan kita sebenarnya kelihatan seperti ini:
Terdapat satu lagi masalah pada masa ini: komputer tidak membenarkan grafik lebih kecil daripada 1px, jadi dia membuat kompromi: lukis kedua-dua piksel.
Jadi, dengan cara ini, garisan asal 1px menjadi garis yang kelihatan lebarnya 2px.
Sebab kegagalan ditemui: garisan dalam Kanvas menjajarkan garis tengah dengan titik permulaan piksel, bukan titik tengah piksel.
Jadi bagaimana kita hendak menyelesaikan masalah yang menyakitkan ini? Mungkin ada yang terfikir: Memandangkan titik permulaan kedua-duanya berbeza, mari kita jadikan titik permulaan mereka sama!
Kita hanya perlu menjajarkan garis tengah garisan dengan titik tengah piksel!
Titik tengah piksel mudah dicari Contohnya, titik tengah piksel kedua terletak pada 1.5 piksel mengikut penjelasan pada gambar Kemudian titik tengah piksel adalah (x-0.5 )px.

Sudah tentu, dalam situasi yang kurang ketat, anda juga boleh menggunakan x 0.5.
Sekarang mari cuba hasil penyelidikan kami pada kanvas.
ctx.moveTo(100.5, 100.5);
ctx.lineTo(200.5,100.5); ;
ctx.closePath();
ctx.lineWidth = 1;
ctx.strokeStyle = 'rgba(255,0,0,0.5)'; >
Tetapi nampaknya ini membuatkan kita sangat keliru apabila membuat garisan Adakah kita perlu menambah 0.5 yang menyedihkan ini setiap kali? Sudah tentu tidak, kerana kebanyakan masa kita menggunakan pembolehubah untuk menyimpan nilai, kita tidak perlu menambah 0.5 pada setiap nilai
Selain itu, untuk baris dengan lineWidth>1, kita tidak perlu risau tentangnya: kerana hanya apabila lebar garisan ialah 1px , masalah ini adalah yang paling jelas.

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Anda boleh mengaburkan foto dalam Kamera Yitian, jadi bagaimana untuk mengaburkan foto? Pengguna boleh mengklik Edit untuk memilih foto, kemudian klik Kesan dan pilih Kabur untuk mengaburkan foto. Pengenalan kepada cara mengaburkan foto ini boleh memberitahu anda kandungan tertentu Berikut ialah pengenalan terperinci, datang dan lihat! Tutorial penggunaan Kamera Yitian Cara mengaburkan foto dengan Kamera Yitian Jawapan: Pergi ke Edit-Special Effects-Blur. 2. Kemudian klik pada gambar dan klik butang edit. 3. Kemudian klik butang kesan khas di bawah. 4. Anda boleh mencari fungsi blur di bawah. 5. Kemudian pilih pembesaran kabur.

Kadang-kadang kertas dinding menjadi kabur apabila menggunakan Win11 Saya tidak tahu apa yang berlaku. Sebenarnya, kita boleh menyelesaikannya dengan mengubah suai pendaftaran atau keserasian aplikasi. Penyelesaian kabur kertas dinding Win11: 1. Kabur desktop 1. Jika desktop kabur, anda boleh klik kanan menu mula bawah dan buka "Run" 2. Kemudian masukkan "regedit" dan tekan Enter untuk membuka pendaftaran. 3. Selepas dibuka, pergi ke lokasi "Komputer\HKEY_CURRENT_USER\ControlPanel\Desktop". 4. Selepas memasukkan, klik kanan pada ruang kosong dan pilih Cipta "Nilai DWORD" baharu 5. Namakan semula kepada "JPEGImportQuality" dan klik dua kali untuk membuka data.

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.

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

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;

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

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

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
