Rumah hujung hadapan web Tutorial H5 html5 Tutorial lukisan kanvas (3)—Sebab garis 1 piksel dikaburkan pada kemahiran tutorial canvas_html5

html5 Tutorial lukisan kanvas (3)—Sebab garis 1 piksel dikaburkan pada kemahiran tutorial canvas_html5

May 16, 2016 pm 03:50 PM
canvas samar-samar

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.

Salin kod
Kod adalah seperti berikut:

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)'; >




Nampak betul?
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.

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.

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)

Cara mengaburkan foto dengan kamera Yitian Cara mengaburkan foto dengan kamera Yitian Feb 23, 2024 pm 06:40 PM

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.

Bagaimana untuk menyelesaikan masalah kertas dinding kabur dalam win11 Bagaimana untuk menyelesaikan masalah kertas dinding kabur dalam win11 Jan 02, 2024 pm 09:05 PM

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.

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 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 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;

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

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

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

See all articles