2010-07-06 10 views
26

मैं कुछ कोड एचटीएमएल 5 कैनवास का उपयोग करता है लिख रहा हूँ। आम तौर पर यह अच्छी तरह से काम करता है, लेकिन अब मुझे एक बहुत अजीब व्यवहार मिला। अजीब चीज यह है कि यह विभिन्न ब्राउज़रों पर सुसंगत है, इसलिए यह होना चाहिए कि मैं गलत बात समझ गया ... दस्तावेज़ों के बावजूद मैं यह कह रहा हूं कि मैं क्या कर रहा हूं।अजीब HTML5 कैनवास drawImage व्यवहार

MyCanvas.prototype.getElement = function() { 

     var innerHtml = "<div></div>"; 

     var elem = jQuery(innerHtml, { 
      'id' : this.viewId 
     }); 



     var canvas = jQuery("<canvas/>", { 
      'id' : this.viewId + "canvas", 
      'width' : this.width, 
      'height' : this.height 
     }); 

     var w = this.width; 
     var h = this.height; 

     jQuery(elem).append(canvas); 

     var imgElem = new Image(); 

     imgElem.src = this.maskImage; 
     imgElem.onload = function() { 
      var ctx = canvas[0].getContext('2d'); 
      ctx.drawImage(this, 0, 0, w, h); 

     }; 

     return elem; 
    }; 

इस मैं jQuery फिर से एक डिव पेज में है कि पहले से ही (जो खाली है) करने के लिए इस तत्व संलग्न करने के लिए इस्तेमाल करेंगे के बाद: यहाँ कोड (यह एक वस्तु विधि है) है। परिणाम होगा कि छवि दस बार की तरह overstretched है यह चौड़ाई है .... यही कारण है कि अजीब है, क्योंकि मैं क्या drawImage की समझ में आ के लिए, छवि को मापना w और ज मूल्यों का उपयोग करें और दिए गए चाहिए w और ज हैं कि कैनवास का आकार, यह अच्छी तरह से फिट होना चाहिए।

मैं क्या गलत कर रहा हूं? क्या ऐसा इसलिए है क्योंकि मैं प्रस्तुत डीओएम पेड़ को चित्रित करता हूं?

+0

आप पोस्ट कर सकते हैं सभी जावास्क्रिप्ट और html? – Castrohenge

उत्तर

55

मैं इस "सुविधा" के लिए भी एक सा irksome पाया। ऐसा लगता है कि आप कैनवास तत्व के लिए चौड़ाई और ऊंचाई गुण सेट करने के लिए सीएसएस का उपयोग नहीं करना चाहते हैं। गुणों के साथ कैनवास तत्व संलग्न करें (सीएसएस के बजाए) और आयामों को स्वयं को सही करना चाहिए।

var canvas = jQuery("<canvas/>", { 
    'id' : this.viewId + "canvas" 
}); 

$('#' + this.viewId).attr('height', this.height).attr('width', this.width); 
+0

यह मेरी समस्या हल हो गया, धन्यवाद। – mindeavor

+12

यह वास्तव में वास्तव में महत्वपूर्ण है एक कैनवास की चौड़ाई और ऊंचाई तत्व द्वारा परिभाषित विशेषताओं है। वे आयाम निर्धारित करते हैं कि कैनवास रास्टर सतह में कितने पिक्सेल हैं; सीएसएस चौड़ाई और ऊंचाई वर्णन करती है कि पृष्ठ में कैनवास कितना बड़ा होगा। – ellisbben

+0

यह मुझे काफी स्टंप था, क्योंकि मैं कुछ भी नहीं कर रहा था, ठीक से बाहर आ रहा था, भले ही कैनवास ब्राउज़र में सही था। धन्यवाद! –

संबंधित मुद्दे