2010-10-07 21 views
12

Estoy tratando de obtener los datos de píxeles de un objeto WPF BitmapSource. Según tengo entendido, esto se puede lograr llamando a su método CopyPixels. Este método necesita un parámetro de zancada, que no sé cómo obtener. Hasta donde yo sé, zancada es el valor que se utiliza al entrar en la matriz durante la lectura o la copia. ¿Cuál sería el valor adecuado de zancada para cualquier BitmapSource?BitmapSource.CopyPixels: ¿cuál es un buen valor para la zancada?

Respuesta

20

Puede usar stride = pixel_size * image_width value. Por ejemplo, para mapa de bits RGBA con ancho de 100 píxeles, paso = 400.

Algunas aplicaciones pueden requerir una alineación de línea especial. Por ejemplo, los mapas de bits GDI de Windows requieren una alineación de línea de 32 bits. En este caso, para el mapa de bits RGB con ancho = 33, el valor de paso 33 * 3 = 99 debe cambiarse a 100, para tener una alineación de líneas de 32 bits en la matriz de destino.

Generalmente, debe conocer los requisitos del conjunto de destino. Si no hay requisitos especiales, use pixel_size * image_width por defecto.

+1

Así que supongo que es el tamaño de píxel en bytes, entonces? –

+6

Sí, este es el tamaño de píxel en bytes. La propiedad BitmapSource.Format devuelve la estructura PixelFormat. Por ejemplo, el tamaño de píxel para Bgr32 es 4, para Bgr24 - 3, para Gray8 - 1 etc. Copiando datos de mapa de bits en una matriz, necesita saber exactamente la estructura resultante de la matriz, y está definida por la propiedad Format. –

+0

Muchas gracias. –

Cuestiones relacionadas