Mam obiekt TransformedBitmap o rozmiarze 2208 x 3000 z formatem {Indexed8}, który robię .CopyPixels(). Używam"Stride" Woes z obiektu TransformedBitmap
(int)((formattedBitmap.PixelWidth * formattedBitmap.Format.BitsPerPixel + 7)/8)
(zakładając „formattedBitmap” to nazwa obrazu, z którego próbuję skopiować pikseli) dla „stride” wartości w moim wywołanie metody i tablicy bajtów, które jest 2208 długości. Mam coś takiego jak to działa gdzie indziej w kodzie (gdzie format obrazu to {Gray8}). Jednak tam, gdzie próbuję zrobić to samo na powyższym obrazie, ciągle dostaję "Argument poza zasięgiem" wyjątek mówiąc "Wartość parametru nie może być mniejsza niż" 6624000 ". \ r \ n Nazwa parametru: bufor."
Moje pytania na ten temat są następujące: dlaczego na świecie ten sam kod działa w jednym miejscu, a nie Drugi? Co na świecie, według laika, naprawdę jest "krokiem" i jak mogę uzyskać pożądany efekt (kopiowania bitów) bez uzyskania tego błędu? Co robię źle?
Dowolna pomoc do tego byłoby bardzo docenione.Dzięki bardzo!
Och, a MSDN ma całkiem przyzwoity artykuł na temat tego, czym jest "krok". Z pewnością nie jest to termin "laika", a ja rzeczywiście uważam, że jest to trochę zniechęcony, ale jest to dobre odniesienie nie mniej ważne (wystarczy, że będziesz musiał przeczytać wiele razy, aby naprawdę zrozumieć, czy jesteś nowy w przetwarzaniu obrazu w C# (tak jak ja!)) LINK: http://msdn.microsoft.com/en-us/library/aa473780(VS.85).aspx – JToland
Jako osoba, która ma tendencję do spojrzenia na kod (wszyscy się spieszymy prawda?) Zobaczyłem twoje obliczenia kroku (niewłaściwe) i spędziłem pół godziny próbując zmusić to do pracy zanim uświadomiłem sobie, że masz poprawną formułę dalej w dół. Byłoby miło mieć prawidłową formułę na górze :) – Peter