आपके पास HTML5 कैनवास के साथ छेद खींचने के लिए 2 विकल्प हैं।
विकल्प 1:
विभिन्न घड़ी दिशा में बाहरी आकार और आंतरिक आकार बनाएं।
बाहरी आकार घड़ी की दिशा और आंतरिक आकार विरोधी घड़ी की दिशा में।
या बाहरी आकार दक्षिणावर्त और आंतरिक आकार विरोधी घड़ी की दिशा में।
ctx.beginPath();
//outer shape, clockwise
ctx.moveTo(100,20);
ctx.lineTo(200,200);
ctx.lineTo(20,200);
ctx.closePath();
//inner shape (hole), counter-clockwise
ctx.moveTo(100,100);
ctx.lineTo(70,170);
ctx.lineTo(140,170);
ctx.closePath();
//fill
ctx.fillStyle = "#FF0000";
ctx.fill();
कोडिंग ड्राइंग दिशा का पता लगाने के लिए थोड़ा दर्द है जब हम कोडिंग कर रहे हैं।
आप पता लगाने के लिए कि क्या डॉट्स की एक श्रृंखला दक्षिणावर्त है या नहीं की जरूरत है, यहाँ एक अच्छा कार्य है:
function isClockwise(dots){
var sum = 0;
for(var i=1, n=dots.length; i<n; i++){
sum += (dots[i][0] - dots[i-1][0]) * (dots[i][1] + dots[i-1][1]);
}
sum += (dots[0][0] - dots[n-1][0]) * (dots[0][1] + dots[n-1][1]);
return sum < 0;
}
console.log(isClockwise([[100,20], [200,200], [20,200]])); //true
console.log(isClockwise([[100,20], [20,200], [200,200]])); //false
अपने डॉट्स दक्षिणावर्त है, लेकिन आप वामावर्त, .reverse (की जरूरत है) अपने डॉट्स सरणी।
var dots = [[100,20], [200,200], [20,200]];
dots.reverse();
विकल्प 2:
प्रयोग करें 'evenodd', शासन को भरने के किसी भी दिशा में अपने आकार आकर्षित।
इस तरह चुनाव 1.
fill() method API देखने के तुलना में बहुत सरल है:
void ctx.fill();
void ctx.fill(fillRule);
void ctx.fill(path, fillRule);
fillRule"अशून्य" हो सकता है या "evenodd"
"अशून्य": गैर शून्य घुमावदार नियम, जो डिफ़ॉल्ट नियम है।
"evenodd": यहां तक कि विषम घुमावदार नियम।
क्यों नहीं करते आप एक बनाना चाहते डोनट ? डोनट्स बहुत अच्छे हैं! कृपया आकृतियों को आकर्षित करने के लिए इस लिंक का संदर्भ लें: https://developer.mozilla.org/en-US/docs/Canvas_tutorial/Drawing_shapes – jazzytomato
मैं डोनट्स के ड्रॉ के लायक होने के साथ सहमत हूं। यह लिंक: http://www.w3schools.com/tags/ref_canvas.asp भी उपयोगी हो सकता है। – GameAlchemist
सिर्फ स्पष्टीकरण के लिए, मैं सैकड़ों अंकों के साथ एक जटिल बहुभुज चित्रित कर रहा हूं। एक बहुभुज के बीच में एक छेद रखने के लिए एक डोनट सिर्फ एक समानता है। – Nick