Gestion des couleurs

lilington Messages postés 158 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 12 mars 2009 - 13 mars 2005 à 13:02
lilington Messages postés 158 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 12 mars 2009 - 14 mars 2005 à 17:42
salut

j'aimerai savoir s'il existe une fonction pour convertire 3 teintes de couleurs en index: j'utilise la fonction



SetPixel(Hwnd,int,int,index); mais cependant je n'ai pas d'index mais
un RVB comment trouver l'équivalence entre RVB et index Merci

ensuite j'ai un autre probleme c'est que le même programme qui marche
sous VC++6.0 m'affiche une erreur de LINK à cause de la fonctrion
PutPixel bizar hein:

[Linker error] undefined reference to `SetPixel@16'

7 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 mars 2005 à 18:49
index est le RVB.

ciao...
BruNews, MVP VC++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 mars 2005 à 18:50
le premier param n'est pas un hwnd mais un HDC (GetDC(hwnd))

ciao...
BruNews, MVP VC++
0
lilington Messages postés 158 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 12 mars 2009
14 mars 2005 à 02:05
e crois que tu ne m'a pas comprit:

la fonction setpixel prent un intex par example SetPixel(hDc,x,y,0x121452);

mais moi je n'ai pas une valeure de type 0x121452 mais j'ai plutot
R,V,B soit 3valeurs j'aimerai donc convertir ces 3valeurs de façon à
obtenir 1seul de type 0xRRVVBB par example
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 mars 2005 à 08:47
Simplissime, doit être codé en 0x00BBGGRR donc:

((((DWORD) B) & 0xFF) << 16) | ((((DWORD) G) & 0xFF) << 8) | (((DWORD) R) & 0xFF);

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
14 mars 2005 à 09:45
la macro RGB(r, g, b) fait la même chose.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 mars 2005 à 09:56
bien entendu mais fallait aller la regarder....

ciao...
BruNews, MVP VC++
0
lilington Messages postés 158 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 12 mars 2009
14 mars 2005 à 17:42
c'est cool mais j'ai essayé autre chose :

index=65536*b+256*v+r ;

ça marche et il m'affiche mon pcx avec les mêmes couleurs que dans
photoshop ce pendant je l'affiche pixel par pixel et ça craint je vois
l'image ce dessiner au ralenti

par un

for (x=xmin<xmax;x++)

for (y=xmin<ymax;y++)

{

index = (65536 )+ PCX[y*bpl+x+bpl*2]+256*PCX[y*bpl+x+bpl]+PCX[y*bpl+x];

SetPixel(,hDCx,y,index);

}

j'imagine que cette double boucle "for " acompagné de la fonction
SetPixel contribuent au ralentissement mais j'ai aucune idé de comment
faire.

je me demande s'il n'est pas possible d'afficher tout mon buffer d'un coup (c quand même un gros pointeur >100 K0) merciiiii
0
Rejoignez-nous