cs_ip2x
Messages postés63Date d'inscriptionmercredi 9 février 2005StatutMembreDernière intervention27 janvier 2009 8 janv. 2008 à 13:11
Merci mais c'est en fait l'inverse que je dois faire : RGB888 -> RGB565.
J'avais une image 32bits à afficher dans un DC 16bits.
La fonction ::CopyImage(HBITMAP(32Bits),...,...,...) avec comme parametre optionnel LR_CREATEDIBSECTION à manifestement permis de résoudre ce problème...
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 7 janv. 2008 à 22:42
Salut,
RGB565 -> RGB888 ?
Un RGB565 contient moins d'informations qu'un RGB888, donc il va falloire "inventer" des informations. Il semble qu'il y ai deux méthodes : recopier les bits de poids fort dans les bits de poid faible, ou
faire un classique produit en croix. La première méthode est moins
précise mais plus rapide que la seconde.
R8 = (R5 << 3) | (R5 >> 2);
R8 = (R5 * 255) / 31;
Ca doit être quelque chose comme ça (Non testé, types Windows) :