Terus bercakap tentang kaedah melukis lengkung dalam kanvas, hari ini kita akan bercakap tentang quadraticCurveTo.
Sejujurnya, kaedah ini agak menakutkan anda boleh mengalaminya buat kali pertama hanya dari nama fungsi. By the way, saya rasa perlu untuk memendekkan nama fungsi ini.
Kuadratik bermaksud kuadratik, iaitu darjah kuadratik bagi persamaan kuadratik dalam matematik. Parameter ctx.quadraticCurveTo adalah seperti berikut:
ctx .quadraticCurveTo(x1,y1,x,y); titik? apa? Anda bertanya kepada saya di mana titik permulaan? Titik permulaan ditentukan sebelum ini menggunakan moveTo.
Sebab mengapa saya meletakkan koordinat titik kawalan dengan nombor siri 1 adalah kerana fungsi untuk melukis lengkung yang disebut kemudian mempunyai dua titik kawalan, iaitu x2 dan y2, jadi di sini adalah pukulan berjaga-jaga.
Titik permulaan yang ditentukan oleh moveTo dan titik akhir yang ditentukan oleh quadraticCurveTo sendiri boleh disambungkan ke dalam garis lurus Memandangkan quadraticCurveTo hanya mempunyai satu titik kawalan, titik kawalan ini sama ada di sebelah kiri garis lurus atau di sebelah kanan. sisi garis lurus Oleh itu, quadraticCurveTo hanya boleh melukis Garisan lengkok, masih tidak boleh melukis bentuk S.
Untuk memudahkan pemahaman, saya masih menggunakan kaedah melukis garisan bantu dalam artikel sebelum ini. Kod awal adalah seperti berikut:
y1 = 250,
x = 400,
y = 500; >ctx.moveTo(300,300 ); //Titik permulaan
ctx.quadraticCurveTo(x1,y1,x,y); //Keluk sebenar
ctx.stroke();
ctx.strokeStyle = "rgba(255,0,0,0.5)";
ctx.moveTo(300,300); ialah garisan untuk melukis titik kawalan
ctx.lineTo(x,y); y);
ctx.stroke();
Di sini saya melukis dua garis bantu, satu ialah garis sambungan antara titik permulaan dan titik akhir, dan satu lagi ialah garis bantu dari titik permulaan ke titik kawalan dan kemudian ke titik akhir (sebenarnya dua). Persilangan kedua-dua garis ini ialah koordinat titik QuadraticCurveTo Control.
quadraticCurveTo hanya boleh melukis lengkung berbentuk arka, tetapi arka ini boleh menjadi sangat tidak teratur, iaitu peningkatan berbanding arka dan arcTo.
Selain itu, quadraticCurveTo tidak akan diterbalikkan seperti arcTo.
Sudah tentu, jika anda mengalihkan titik kawalan jauh, grafik mungkin menjadi asing kepada anda. Mari cuba:
“y1 = 950;
” Saya hanya menukar y1 sedikit lebih besar, dan kemudian lengkungan melepasi skop kanvas.
Namun, julat lengkung yang dilukis oleh quadraticCurveTo tidak boleh mencapai atau melebihi koordinat titik kawalan Selagi kita "mengawal" titik kawalan, kita tidak perlu risau.
Saya menulis halaman contoh mudah alih untuk menunjukkan proses melukis lengkung dengan quadraticCurveTo Saya harap ia dapat membantu anda mendalami pemahaman anda: