यह अजीब लगता है, लेकिन फिर भी एचटीएमएल 5 ड्राइंग लाइनों, सर्कल, आयतों और कई अन्य मूल आकृतियों का समर्थन करता है, इसमें मूल बिंदु को खींचने के लिए कुछ भी उपयुक्त नहीं है। ऐसा करने का एकमात्र तरीका आपके पास जो कुछ भी है उसके साथ बिंदु का अनुकरण करना है।
तो मूल रूप से 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 देख सकते हैं ।