Probleme avec un dégradé

hugo7 Messages postés 352 Date d'inscription samedi 11 décembre 2010 Statut Membre Dernière intervention 29 juin 2011 - 12 déc. 2008 à 20:52
Pistol_Pete Messages postés 1054 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 - 16 déc. 2008 à 18:47
Bonjour voila mon problème.
J'utilise la librairie SDL et je cret un dégradé allant du noir au blanc qui marche très bien avec ce code :

intmain(intargc,char*argv[])
{
SDL_Surface*ecran=NULL,*lignes[256]={NULL};
SDL_Rectposition;
inti=0;

SDL_Init(SDL_INIT_VIDEO);

ecran=SDL_SetVideoMode(640,256,32,SDL_HWSURFACE);// Hauteur de 256 pixels

for(i=0;i<=255;i++)
lignes[i]=SDL_CreateRGBSurface(SDL_HWSURFACE,640,1,32,0,0,0,0);// Allocation des 256 surfaces

SDL_WM_SetCaption("Mon dégradé en SDL !",NULL);

SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,0,0,0));

for(i=0;i<=255;i++)
{
position.x=0;// Les lignes sont à gauche (abscisse de 0)
position.y=i;// La position verticale dépend du numéro de la ligne actuelle
SDL_FillRect(lignes[i],NULL,SDL_MapRGB(ecran->format,i,i,i));// Remplissage
SDL_BlitSurface(lignes[i],NULL,ecran,&position);// Collage
}

SDL_Flip(ecran);
pause();

for(i=0;i<=255;i++)// N'oubliez pas de libérer chacune des 256 surfaces !
SDL_FreeSurface(lignes[i]);
SDL_Quit();

returnEXIT_SUCCESS;
}
voidpause()
{
intcontinuer=1;
SDL_Eventevent;

while(continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
caseSDL_QUIT:
continuer=0;
}
}
}

Ensuite j'ai essayer de faire l'inverse et de faire un dégradé du blanc au noir.
Pour cela j'ai changer la boucle for qui me permet de remplir en cela :

for(i=255;i>=0;i--)

Mais sa ne marche pas.
Voila d'avance merci pour vos réponses

3 réponses

Pistol_Pete Messages postés 1054 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
14 déc. 2008 à 14:48
Salut,
Il suffit de faire exactement la même chose en remplaçant
position.y=i;// La position verticale dépend du numéro de la ligne actuelle

par
position.y=255-i;// La position verticale dépend du numéro de la ligne actuelle

A+
________________________________________________________________________________
Mon site internet :http://ImAnalyse.free.fr 
0
hugo7 Messages postés 352 Date d'inscription samedi 11 décembre 2010 Statut Membre Dernière intervention 29 juin 2011
16 déc. 2008 à 16:14
Merci pour ta réponse pistol_pete sa marche.
Maintenant je voudrais savoir comment faire pour faire un dégradé allant du rouge au vert par exemple.
Merci d'avances.
0
Pistol_Pete Messages postés 1054 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
16 déc. 2008 à 18:47
Salut
C'est pas très compliqué, il faut mettre quelque chose comme ca:
SDL_MapRGB(ecran->format,255-i,i,0)

pour i de 0 à 255
A+
______________________________________________________________________________
Mon site internet :   http://ImAnalyse.free.fr
0