Probleme avec un dégradé

Signaler
Messages postés
353
Date d'inscription
samedi 11 décembre 2010
Statut
Membre
Dernière intervention
29 juin 2011
-
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
-
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

Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
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 
Messages postés
353
Date d'inscription
samedi 11 décembre 2010
Statut
Membre
Dernière intervention
29 juin 2011

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.
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
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