Bonjour à tous,
Après avoir suivit le cours de programmation en C (avec SDL) , j'ai voulu faire un dégradé vertical du blanc vers le noir (le contraire du cours).
J'ai un problème :
J'ai essayé de plusieurs manières mais à chaque fois j'obtiens quelque chose de mauvais.
Ici, j'utilise j pour les lignes. Ainsi, dans ma tête j'aurais ligne 0 (j=0) en blanc (255,255,255) et puis on incrémente j pour passer à la ligne suivante et i se décrémente pour avoir la nuance de couleur suivante. Mais ce ne va pas , j'obtiens un écran de couleur noire unie.Code:for(i=255;i>=0;i--) { int j=0; position.x = 0; // Les lignes sont à gauche (abscisse de 0) position.y = j; // La position verticale dépend du numéro de la ligne actuelle SDL_FillRect(ligne[j], NULL, SDL_MapRGB(ecran->format, i, i, i));// Remplissage SDL_BlitSurface(ligne[j], NULL, ecran, &position); // Collage j++; }
En faisant ainsi :
Ici j'utilise i pour les lignes et j pour la couleur. J'obtiens un page blanche. J'ai essayé avec j=150 et là j'ai une page grise. J'ai essayé avec i<=10 et j=150 et là j'ai 10 lignes de gris puis du noir (car mon écran était rempli préalablement en noir). J'en suis donc venu à la conclusion que mon ordi n'effectuait pas l'opération de décrémentation dans ce cas ou d'incrémentation dans le cas précédant. J'ai aussi essayé en faisant j=j-1 mais ce ne change rien. On dirait que ce n'est pas pris en compte.Code:for(i=0;i<=255;i++) { j=255; 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(ligne[i], NULL, SDL_MapRGB(ecran->format, j, j, j));// Remplissage SDL_BlitSurface(ligne[i], NULL, ecran, &position); // Collage j--; }
Quelqu'un a-t-il une explication à me donner ?
Merci d'avance
-----