Saya perlu tahu cara menggambar poligon di atas kanvas. Tanpa menggunakan jQuery atau semacamnya.
javascript
css
html
canvas
CyanPrime
sumber
sumber
Jawaban:
Buat jalur dengan
moveTo
danlineTo
( demo langsung ):sumber
dari http://www.scienceprimer.com/drawing-regular-polygons-javascript-canvas :
Kode berikut akan menggambar segi enam. Ubah jumlah sisi untuk membuat poligon beraturan yang berbeda.
sumber
cxt.save();
cxt.fillStyle = "#FF000";
cxt.fill();
cxt.restore();
Anda dapat mengisi bentuknya.var angle = i * 2 * Math.PI / shape.currentSides + rotation
ditambahkan ke cos dan nilai dosa bekerja untuk saya ... terima kasih lagisin
dancos
panggilan dan perubahanYcenter +
untukYcenter -
di kedua tempat (meninggalkan sebagai sum daripada perbedaan dari nilai-nilai menghasilkan itu dimulai dengan titik di bagian bawah bentuk yang dihasilkan). Saya bukan orang pintar dalam hal trigonometri, jadi ambillah dengan sebutir garam; tetapi ini setidaknya mencapai apa yang saya inginkan.sumber
for
metode vanilla JavaScript . Satu baris kode itu sangat menyederhanakan banyak hal. Saya biasanya menggunakan jQuery.each()
tetapi aplikasinya kurang fleksibel.var
, dalam kode di atasitem
adalah mencemari namespace global. Semuanya dalam satu baris, yang mengurangi keterbacaan. Jika Anda tidak peduli dengan keterbacaan maka Anda sebaiknya menghapus tanda kurung keriting.sumber
Berikut adalah fungsi yang bahkan mendukung gambar searah jarum jam / berlawanan arah jarum jam yang Anda kontrol isinya dengan aturan belitan bukan nol.
Berikut adalah artikel lengkap tentang cara kerjanya dan banyak lagi.
sumber
Anda bisa menggunakan metode lineTo () yang sama seperti: var objctx = canvas.getContext ('2d');
jika Anda tidak ingin mengisi poligon gunakan metode stroke () sebagai ganti fill ()
Anda juga dapat memeriksa yang berikut ini: http://www.authorcode.com/draw-and-fill-a-polygon-and-triangle-in-html5/
Terima kasih
sumber
Selain @canvastag, gunakan
while
loop dengan yangshift
menurut saya lebih ringkas:sumber
Untuk membuat segi enam sederhana tanpa membutuhkan loop, cukup gunakan fungsi beginPath (). Pastikan canvas.getContext ('2d') Anda sama dengan ctx jika tidak, ini tidak akan berfungsi.
Saya juga suka menambahkan variabel bernama times yang dapat saya gunakan untuk menskalakan objek jika perlu. Ini yang tidak perlu saya ubah setiap angka.
sumber
Untuk orang yang mencari poligon beraturan:
Menggunakan:
sumber