2015-12-04 6 views
5

मैं एक स्कूल परियोजना के हिस्से के रूप में एक एमएसडीएन लेख से कुछ थोड़ा-संशोधित कोड चलाने की कोशिश कर रहा हूं। लक्ष्य एक चित्र बॉक्स में बिटमैप को याद करने के लिए एक कोलोमेट्रिक्स का उपयोग करना है। यहाँ मेरी कोड है:सी # रंगमेट्रिक्स इंडेक्स बाउंड्स से बाहर

 float[][] colorMatrixElements = { 
     new float[] {rScale, 0, 0, 0},   
     new float[] {0, gScale, 0, 0},   
     new float[] {0, 0, bScale, 0},   
     new float[] {0, 0, 0, 1}}; 

     ColorMatrix colorMatrix = new ColorMatrix(colorMatrixElements); 

जहां rScale, gScale, और bScale 1. 0.0f से मूल्यों के साथ तैरता हैं मूल MSDN लेख यहाँ है: जब यह अंतिम पंक्ति के लिए नीचे हो जाता है https://msdn.microsoft.com/en-us/library/6tf7sa87%28v=vs.110%29.aspx

, "ColorMatrix ColorMatrix = नया ..." मेरा कोड रनटाइम त्रुटि को हिट करता है। डीबगर में, मुझे एक फ्लोट के रूप में colorMatrixElements मिलता है [4] []। जैसे कि यह 4x4 सरणी नहीं है। क्या मैंने अपनी कॉपी-पेस्ट नौकरी में कुछ लिखा है, या क्या मैं समझ नहीं पा रहा हूं कि सी # 2 डी सरणी कैसे संभालता है?

सहायता के लिए धन्यवाद।

उत्तर

4

आपके द्वारा लिंक किए जाने वाले बहुत से पृष्ठ के अनुसार, आपको उस निर्माता को सरणी पास करने की आवश्यकता है। आप 4 से 4 सरणी पास कर रहे हैं, इसलिए स्वाभाविक रूप से आपको IndexOutOfBoundsException मिलता है।

float[][] colorMatrixElements = { 
    new float[] {rScale, 0, 0, 0, 0},   
    new float[] {0, gScale, 0, 0, 0},   
    new float[] {0, 0, bScale, 0, 0},   
    new float[] {0, 0, 0,  1, 0}, 
    new float[] {0, 0, 0,  0, 1} 
     }; 

    ColorMatrix colorMatrix = new ColorMatrix(colorMatrixElements); 
+0

कि अच्छी तरह से बाहर काम किया की कोशिश करो। मेरे प्रोजेक्ट की बड़ी योजना में मुझे कुछ करने की ज़रूरत है जो मुझे करने की ज़रूरत है, लेकिन यह अब संकलित है। जवाब के लिए धन्यवाद! – Micah

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