Saya memiliki SVG berikut:
Saya ingin mendapatkan efek Bagaimana saya bisa mencapai efek sudut bulat itu? Saya tahu bahwa sudah terlambat untuk menjawab ini, tetapi demi SO, inilah cara Anda bisa membuat kotak bulat dengan SVG Path:
Penjelasan: m100.100: pindah ke titik (100.100) h200: gambar garis horizontal 200px dari tempat kita berada a20,20 0 0 1 20,20: gambar busur dengan jari-jari 20px X, jari-jari 20px Y, searah jarum jam, ke titik dengan perbedaan 20px pada sumbu X dan Y v200: gambar garis vertikal 200px dari tempat kita berada a20,20 0 0 1 -20,20: gambar busur dengan jari-jari 20px X dan Y, searah jarum jam, ke titik dengan perbedaan -20px dalam X dan perbedaan 20px pada sumbu Y h-200: gambar garis horizontal -200px dari tempat kita berada a20,20 0 0 1 -20, -20: gambar busur dengan 20px X dan jari-jari Y, searah jarum jam, ke titik dengan perbedaan -20px dalam X dan -20px perbedaan dalam sumbu Y v-200: gambar garis vertikal -200px dari tempat kita berada a20,20 0 0 1 20, -20: gambar busur dengan jari-jari 20px X dan Y, searah jarum jam, ke titik dengan perbedaan 20px dalam X dan -20px perbedaan dalam sumbu Y z: tutup jalur
Tidak yakin mengapa tidak ada yang mengirim jawaban SVG yang sebenarnya. Berikut adalah persegi panjang SVG dengan sudut bulat (jari-jari 3) di atas:
Ini adalah Move To (M), Line To (L), Arc To (A), Line To (L), Arc To (A), Line To (L), Close Path (Z). Angka yang dibatasi koma adalah koordinat absolut. Busur didefinisikan dengan parameter tambahan yang menentukan jari-jari dan jenis busur. Ini juga dapat dilakukan dengan koordinat relatif (gunakan huruf kecil untuk L dan A). Referensi lengkap untuk perintah-perintah itu ada di halaman W3C SVG Paths , dan bahan referensi tambahan pada path SVG dapat ditemukan di artikel ini . Seperti yang dirujuk dalam jawaban saya ke Menerapkan sudut bulat ke jalur/poligon , saya telah menulis rutin dalam javascript untuk sudut pembulatan umum jalur SVG, dengan contoh, di sini: http://plnkr.co/edit/ kGnGGyoOCKil02k04snu . Ini akan bekerja secara independen dari efek stroke yang Anda miliki. Untuk menggunakan, sertakan file rounding.js dari Plnkr dan panggil fungsi seperti ini:
Hasilnya akan menjadi jalan bulat. Hasilnya terlihat seperti ini: Anda telah menetapkan secara eksplisit Berikut adalah contoh yang dimodifikasi dengan sudut bulat yang dibuat melalui goresan:
Jika tidak — jika Anda membutuhkan bentuk bundar yang sebenarnya dan bukan hanya stroke lemak bulat — Anda harus melakukan apa yang dikatakan @Jlange dan membuat bentuk bundar yang sebenarnya. Saya juga akan mempertimbangkan untuk menggunakan MDN SVG docs <- perhatikan elemen rect yang ditarik kedua Pertanyaan ini adalah hasil pertama untuk Googling "svg rounded cornerers corner". Saran Phrogz untuk menggunakan Saran Jlange untuk menggunakan kurva lebih baik, tetapi tidak terlalu konkret. Saya akhirnya menggunakan kurva Bézier kuadrat untuk menggambar sudut bulat. Perhatikan gambar sudut yang ditandai dengan titik biru dan dua titik merah di tepi yang berdekatan: Dua baris dapat dibuat dengan perintah Sekarang untuk melanjutkan bentuk setelah sudut membulat, garis lurus dalam kurva Bézier dapat dicapai dengan mengatur titik kontrol antara pada garis di antara dua sudut. Untuk membantu saya menentukan path, saya menulis skrip Python ini yang menerima edge dan radius. Vektor matematika membuat ini sebenarnya sangat mudah. Gambar yang dihasilkan dari output:
Saya sendiri pernah mengalami masalah ini dan berhasil menyelesaikannya dengan menulis fungsi JavaScript kecil. Dari apa yang saya tahu, tidak ada cara mudah untuk memberikan elemen path di sudut bulat svg kecuali jika Anda hanya perlu perbatasan untuk dibulatkan, dalam hal ini (CSS) atribut stroke, lebar-stroke dan yang terpenting stroke-linejoin = "round" cukup memadai. Namun, dalam kasus saya, saya menggunakan objek jalur untuk membuat bentuk khusus dengan sudut n yang diisi dengan warna tertentu dan tidak memiliki batas yang terlihat, seperti ini:
Saya berhasil menulis fungsi cepat yang mengambil array koordinat untuk path svg dan mengembalikan string path yang sudah selesai untuk dimasukkan ke atribut d dari elemen path html. Bentuk yang dihasilkan kemudian akan terlihat seperti ini:
Inilah fungsinya:
Anda dapat menentukan kekuatan pembulatan dengan mengatur variabel curveRadius di bagian atas. Standarnya adalah 3 untuk sistem koordinat 100x100 (viewport), tetapi tergantung pada ukuran svg Anda, Anda mungkin perlu menyesuaikan ini. Berikut ini beberapa jalur untuk tab: https://codepen.io/mochime/pen/VxxzMW
Jawaban lain menjelaskan mekanika. Saya terutama menyukai jawaban hossein-maktoobian. Jalur di pena melakukan pekerjaan paling berat, nilainya dapat dimodifikasi sesuai dengan dimensi apa pun yang diinginkan. |