MSDN संदर्भ: [1] http://msdn.microsoft.com/en-us/library/5ey6h79d.aspx#Y1178Bitmap.Lockbits भ्रम
लिंक से यह है कि पहला तर्क "ताला निर्दिष्ट बिटमैप के भाग के लिए" होगा जो मैं बिटमैप का एक छोटा हिस्सा (होना करने के लिए सेट का कहना है बिटमैप 500x500 है, मेरा आयताकार (0,0,50,50) है) हालांकि लौटाया गया बिटमैपडाटा 1500 (= 500 * 3) का है, इसलिए मूल रूप से प्रत्येक स्कैन क्षैतिज रूप से पूरी तस्वीर को स्कैन करेगा। हालांकि, मैं जो चाहता हूं वह बिटमैप का केवल शीर्ष बाएं 50x50 हिस्सा है।
यह कैसे काम करता है?
धन्यवाद। यह समझ आता है! –
कोई गारंटी नहीं है कि बिटमैप का मार्ग बराबर होगा (चौड़ाई * बाइट प्रति पिक्सेल), इस प्रकार "var bpp = data.Stride/bitmap.Width;" गलत है (आप आसानी से एक अलग कदम के साथ एक बिटमैप बना सकते हैं)। आप प्रति पिक्सल बिट्स के लिए (या (बिटमैप.पिक्सेलफॉर्मैट) >> 11) और 31) बिट्स प्रति पिक्सेल के लिए ((बिटमैप.पिक्सेलफॉर्मैट) >> 8) और 255) का उपयोग कर सकते हैं। –
इसके अलावा, यदि आपके लिए आगे बढ़ना महत्वपूर्ण है, तो आप अपना खुद का बफर आपूर्ति कर सकते हैं और ImageLockMode.UserInputBuffer के साथ आगे बढ़ सकते हैं। –