ดูเหมือนว่าแปลก แต่ HTML5 ยังรองรับการวาดเส้นวงกลมสี่เหลี่ยมและรูปร่างพื้นฐานอื่น ๆ อีกมากมายมันไม่มีอะไรเหมาะสำหรับการวาดจุดพื้นฐาน วิธีเดียวที่จะทำเช่นนั้นคือการจำลองจุดด้วยสิ่งที่คุณมี
ดังนั้นโดยทั่วไปมีวิธีแก้ปัญหา 3 ประการที่เป็นไปได้:
- วาดจุดเป็นเส้น
- วาดจุดเป็นรูปหลายเหลี่ยม
- วาดจุดเป็นวงกลม
แต่ละคนมีข้อเสีย
ไลน์
function point(x, y, canvas){
canvas.beginPath();
canvas.moveTo(x, y);
canvas.lineTo(x+1, y+1);
canvas.stroke();
}
โปรดจำไว้ว่าเรากำลังวาดไปในทิศทางตะวันออกเฉียงใต้และถ้านี่คือขอบอาจมีปัญหา แต่คุณสามารถวาดในทิศทางอื่นได้
สี่เหลี่ยมผืนผ้า
function point(x, y, canvas){
canvas.strokeRect(x,y,1,1);
}
หรือในวิธีที่เร็วกว่าการใช้ fillRect เพราะโปรแกรมแสดงผลจะเติมหนึ่งพิกเซล
function point(x, y, canvas){
canvas.fillRect(x,y,1,1);
}
วงกลม
ปัญหาอย่างหนึ่งของวงการคือมันยากกว่าสำหรับเครื่องยนต์ที่จะแสดงผล
function point(x, y, canvas){
canvas.beginPath();
canvas.arc(x, y, 1, 0, 2 * Math.PI, true);
canvas.stroke();
}
ความคิดเช่นเดียวกับสี่เหลี่ยมคุณสามารถบรรลุด้วยการเติม
function point(x, y, canvas){
canvas.beginPath();
canvas.arc(x, y, 1, 0, 2 * Math.PI, true);
canvas.fill();
}
ปัญหาเกี่ยวกับวิธีแก้ไขปัญหาทั้งหมด:
- มันยากที่จะติดตามคะแนนทั้งหมดที่คุณจะวาด
- เมื่อคุณซูมเข้ามันดูน่าเกลียด
หากคุณสงสัยว่า " วิธีที่ดีที่สุดในการวาดจุดคืออะไร " ฉันจะไปกับสี่เหลี่ยมที่เต็มไปด้วย ท่านสามารถเข้าดูของฉันjsperf นี่กับการทดสอบเปรียบเทียบ