Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

157
Vistas
¿Por qué Windows GDI usa el formato RGBA para `COLORREF` en lugar de BGRA?

MSDN afirma :

Al especificar un color RGB explícito, el valor COLORREF tiene la siguiente forma hexadecimal:

0x00bbggrr

El byte de orden inferior contiene un valor para la intensidad relativa del rojo; el segundo byte contiene un valor para verde; y el tercer byte contiene un valor para azul. El byte de orden superior debe ser cero. El valor máximo para un solo byte es 0xFF.

Desde wingdi.h

 #define RGB(r,g,b) ((COLORREF)((BYTE)(r) | ((BYTE)(g) << 8) | ((BYTE)(b) << 16))) #define GetRValue(rgb) ((BYTE) (rgb) ) #define GetGValue(rgb) ((BYTE) ((rgb) >> 8)) #define GetBValue(rgb) ((BYTE) ((rgb) >> 16))

Como Windows es Little Endian, COLORREF está en formato RGBA. Esto parece extraño porque el formato de color que usa Windows internamente, ¿no es BGR(A)?

La estructura RGBQUAD se define como

 typedef struct tagRGBQUAD { BYTE rgbBlue; BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved; } RGBQUAD;

que es, a diferencia de COLORREF , BGRA.

Dado que la función bitblt espera una matriz de valores COLORREF , esto significa que siempre hay una conversión adicional de RGBA a BGRA durante cada llamada, si Windows usa BGRA como su formato nativo.

No recuerdo correctamente, pero también leí en alguna parte que hay una mezcla extraña en el formato de píxeles que se usa en winapi.

¿Puede alguien por favor explicar?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Los COLORREF se remontan a cuando había mucha menos estandarización en los formatos de píxeles. Muchos adaptadores de gráficos todavía usaban paletas en lugar de colores completos de 24 o 32 bits, por lo que incluso si su adaptador requería un reordenamiento de bytes, no necesitaba hacer muchos de ellos. Algunos adaptadores de gráficos incluso almacenaron imágenes en planos de color separados en lugar de un solo plano de colores multicanal. No había una respuesta "correcta" en ese entonces.

Los RGBQUAD provienen del formato BMP, que, como mencionó Raymond Chen en los comentarios, proviene del formato de mapa de bits OS/2.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda