VC requiere funciones CDib para manejar funciones que convierten imágenes en color verdadero en imágenes en escala de grises
¿Quién sabe por qué publicaste así?
Una cosa aún no está clara. ¿Dijiste que CDib debería ser una clase que creaste tú mismo? ¿O es la clase prefabricada de otra persona que no está disponible en MFC?
La pregunta formulada es demasiado general. ¿Debería preguntar directamente sobre el código de función?
Dame una pista:?
Estudiar la estructura de datos BITMAPINFO. Luego modifique el código que publicó la última vez:
La modificación del color de la paleta se cambia directamente a la modificación de la matriz de píxeles de Bits.
Realmente no sé si el código de mapa de bits de 256 colores que cambiaste fue escrito por ti. ¿Cómo no pudiste adaptarte a él? Si no lo escribió, significa que no comprende el código. ¡Estudie el código primero!
============================================ = ==================?
Agregar:?
if?(lpbmi>bmiHeader.biBitCount?! =?24 ) ?{
// Esta no es una imagen en color real, cambie la paleta de colores.
} else?{?
// Es una imagen en color verdadero, cambie los datos del mapa de bits en lpDIBBits.
¿PBYTE?(PBYTE)lpDIBBits?+?lpbmi>bmiHeader.biSizeImage;?
PBYTE?lpCur?=?(PBYTE)lpDIBBits;?
mientras (lpCur?
*lpCur++?(*lpCur)?*?0.299;?
*lpCur++?(*lpCur)?*?0.587;?
*lpCur++? =?(*lpCur)?*?0.114;?
}?
}?
// Mapa de bits allí Generalmente hay cuatro tipos: mapa de bits monocromático (biBitCount==1), mapa de bits de 16 colores (biBitCount==4), mapa de bits de 256 colores (biBitCount==8) e imagen de color verdadero de 24 bits (biBitCount==24).
Los primeros 3 bits tienen la paleta, por lo que los datos del mapa de bits ubicados en lpDIBBits en realidad almacenan el valor del índice de la paleta. Los mapas de bits de 24 bits no tienen paleta, sino que utilizan 3 bytes para almacenar el color real.
P.D. No dije que no hubiera mapas de bits de 256 colores: "el predominio de las imágenes en color verdadero hoy en día no significa que no haya mapas de bits de 256 colores". Lo que digo es que a tu DIB le falta una parte muy importante. Eso es todo. Utilicé tus datos en escala de grises y los cambié como se muestra, ¿verdad?
===========================================
flotante?hue?=?0.1;//0.3||0.5||0.7,color aleatorio.
*lpCur++? =?(*lpCur)?*?hue;?
*lpCur++?(*lpCur)?*?
*lpCur++?(*lpCur)?*?hue;
*lpCur++?