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