के लिए आवश्यक बफर आकार की गणना करना मैं WriteableBitmap.WritePixels विधि के लिए आवश्यक बफर आकार की गणना कैसे करूं?WriteableBitmap.WritePixels विधि
मैं अधिभार का उपयोग चार पैरामीटर ले रहा हूं, पहला इंट 32Rect है, अगला एक बाइट सरणी है जिसमें रंग के लिए आरजीबीए संख्याएं हैं, तीसरा है (जो मेरे लिखने योग्य बिटमैप की चौड़ाई है बिट्स प्रति पिक्सेल 8 से विभाजित), और आखिरी बफर (जिसे इंटेलिसेंस में ऑफ़सेट कहा जाता है) है।
मैं बफर आकार नहीं है नीचे दिए गए कोड में पर्याप्त रनटाइम त्रुटि हो रही है:
byte[] colourData = { 0, 0, 0, 0 };
var xCoordinate = 1;
var yCoordinate = 1;
var width = 2;
var height = 2;
var rect = new Int32Rect(xCoordinate, yCoordinate, width, height);
var writeableBitmap = new WriteableBitmap(MyImage.Source as BitmapSource);
var stride = width*writeableBitmap.Format.BitsPerPixel/8;
writeableBitmap.WritePixels(rect, colourData, stride,0);
क्या है सूत्र मैं ऊपर कोड में आवश्यक बफर मूल्य की गणना करने के लिए उपयोग करने की आवश्यकता है?
जब आप RGBA कहते हैं, आप निश्चित रूप से प्रति पिक्सल 32 बिट है। यह प्रति पिक्सेल 4 बाइट बनाता है। 2x2 रेक्ट में कुल 16 बाइट्स (4 पिक्सल * 4 बाइट्स/प्रति पिक्सेल) है। आपका 'coulorData' स्पष्ट रूप से बहुत छोटा है। – Clemens
@ क्लेमेंस क्या आपका मतलब है कि मेरा स्ट्राइड बहुत छोटा है? यदि आप नहीं समझा सकते हैं कि रंगीन डेटा कितना छोटा है, जैसा कि मुझे समझ में नहीं आता है। धन्यवाद – JMK
स्ट्राइड बस बफर में प्रति पंक्ति बाइट्स की संख्या है। आपके पास 4 बाइट प्रति पिक्सल प्रति पंक्ति 2 पिक्सेल (यानी लिखने आयत की चौड़ाई) है, जिसके परिणामस्वरूप 8. – Clemens