MSDN ссылка: [1] http://msdn.microsoft.com/en-us/library/5ey6h79d.aspx#Y1178Bitmap.Lockbits спутанность
Из ссылки он говорит, что первый аргумент будет «определяет часть Bitmap для блокировки», который я установил, чтобы быть меньшая часть Bitmap (Растровое изображение 500x500, мой прямоугольник равен (0,0,50,50)), однако возвращенный битмапДата имеет шаг 1500 (= 500 * 3), поэтому в основном каждое сканирование будет сканировать всю картинку по горизонтали. Однако то, что я хочу, это только верхняя левая часть 50x50 части растрового изображения.
Как это работает?
Спасибо. В этом есть смысл! –
Нет гарантии, что шаг растрового изображения будет равен (ширина * байты на пиксель), таким образом, «var bpp = data.Stride/bitmap.Width;» (вы можете легко создать растровое изображение с другим шагом). Вы можете использовать (((bitmap.Pixelformat) >> 8) & 255), чтобы получить количество бит на пиксель, или (((bitmap.Pixelformat) >> 11) и 31) для байтов на пиксель. –
Кроме того, если шаг важен для вас, вы можете предоставить свой собственный буфер и шаг с помощью ImageLockMode.UserInputBuffer. –