2012-11-17 45 views
11

मैं शरीर पर यह जावा स्क्रिप्ट का उपयोग कर रहा समारोह onmousemove स्पष्ट नहीं करता है:clearRect समारोह कैनवास

function lineDraw() { 
    //Get the context and the canvas: 
    var canvas=document.getElementById("myCanvas"); 
    var context=canvas.getContext("2d"); 
    //Clear the last canvas 
    context.clearRect(0, 0, canvas.width,canvas.height); 
    //Draw the line: 
    context.moveTo(0,0); 
    context.lineTo(event.clientX,event.clientY); 
    context.stroke(); 

} 

यह हर बार मैं चारों ओर माउस को स्थानांतरित कैनवास स्पष्ट करने के लिए चाहिए था, और एक नई रेखा खींचना, लेकिन यह ठीक से काम नहीं कर रहा है। मैं jQuery, माउस श्रोताओं या इसी तरह के उपयोग किए बिना इसे हल करने की कोशिश कर रहा हूं।

http://jsfiddle.net/7vx2z/

उत्तर

22

आप "beginPath()" का उपयोग करना चाहिए

यहाँ कोड है। बस इतना ही।

function lineDraw() { 
    var canvas=document.getElementById("myCanvas"); 
    var context=canvas.getContext("2d"); 
    context.clearRect(0, 0, context.width,context.height); 
    context.beginPath();//ADD THIS LINE!<<<<<<<<<<<<< 
    context.moveTo(0,0); 
    context.lineTo(event.clientX,event.clientY); 
    context.stroke(); 
} 
+0

इस उत्तर को शुद्धता के लिए स्वीकार किए गए अनुसार चिह्नित किया गया। –

+0

यह जोड़ना चाहते हैं कि यह रेक्ट और आर्क जैसे ड्रॉ विधियों के लिए भी जाता है। – MetalGodwin

+1

यह पुराना है लेकिन ... 'क्लोजपथ' यहां बेकार और भ्रामक है, यह सिर्फ एक पंक्ति है (पिछली स्टार्टिंगपॉइंटऑफथीथ) 'इसलिए एक लाइन के लिए, यह कुछ भी नहीं करेगा, और यह सब कुछ नहीं बताता है कि आपने अपना काम पूरा कर लिया है पथ घोषणा – Kaiido

-1

context.canvas.width = context.canvas.width साथ प्रयास करें::

function lineDraw() { 
    var canvas=document.getElementById("myCanvas"); 
    var context=canvas.getContext("2d"); 
    //context.clearRect(0, 0, context.width,context.height); 
    context.canvas.width = context.canvas.width; 
    context.moveTo(0,0); 
    context.lineTo(event.clientX,event.clientY); 
    context.stroke(); 
} 

डेमो HERE

+0

या बस 'myCanvas.width = myCanvas.width; '। –