"Stride" Горе от объекта TransformedBitmap

У меня есть объект TransformedBitmap 2208 x 3000 с форматом {Indexed8}, который я использую. CopyPixels () на. Я использую

(int)((formattedBitmap.PixelWidth * formattedBitmap.Format.BitsPerPixel + 7) / 8)

(предполагается, что 'formattedBitmap' - это имя изображения, из которого я ' m пытается скопировать пиксели) для значения 'stride' в моем вызове метода и массива байтов длиной 2208. У меня что-то подобное работает в другом месте кода (где формат изображения - {Gray8}. Однако, когда я пытаюсь сделать то же самое с вышеупомянутым изображением, я постоянно получаю «Аргумент вне диапазона» исключение: «Значение параметра не может быть меньше, чем '6624000'. \ r \ nParameter name: buffer.»

У меня следующие вопросы: почему в мире кажется, что один и тот же код работает в одном месте, а не другое? Что в мире, с точки зрения непрофессионала, на самом деле ТАКОЕ "шаг"? И как я могу получить желаемый эффект (копирование битов), не получая этой ошибки? Что я делаю не так?

Любая помощь в этом был бы очень признателен. Большое спасибо!

7
задан H.B. 16 January 2012 в 03:35
поделиться