Gérer la transparence

Le tutoriel en ligne vous pose quelques problèmes ? C'est ici pour en parler !

Gérer la transparence

Messagede YuGiOhJCJ le 31 Mai 2005 22:55

Lut,
j'ai un BMP sur font jaune et je voudrais demander à SDL de transformer le jaune par de la transparence.
sfc_image=SDL_LoadBMP(image);
et ensuite je dois sûrement ajouter quelque chose.
Tu sais comment faire?
[yugiohjcj.free.fr]
Yu-Gi-Oh! Jeu de Cartes à Jouer
Avatar de l’utilisateur
YuGiOhJCJ
Bébé Chocobo
Bébé Chocobo
 
Messages: 121
Inscription: 22 Fév 2005 21:58
Localisation: Devant mon ordinateur en train de développer

Messagede moi1392 le 31 Mai 2005 23:08

Avatar de l’utilisateur
moi1392
Chocobo des mers profondes
Chocobo des mers profondes
 
Messages: 3986
Inscription: 27 Juin 2004 12:03
Localisation: chez wam

OK

Messagede YuGiOhJCJ le 03 Juin 2005 18:04

Ah oui j'avais pas vu.
Mais j'y arrive quand même pas.

le truc c'est:
Code: Tout sélectionner
SDL_SetColorKey( surface->image, SDL_SRCCOLORKEY, surface->image->format->Rmask );


Je ne peux pas remplacer " surface->image" et "surface->image->format->Rmask " par autre chose?

Moi je veux juste utiliser
-ma surface ou ya l'image:
sfc_image
-l'image:
image.bmp
-la couleur:
Jaune, ou yellow en anglais ou encore en HTML: FF0000

Je n'ai pas envie de créer de structures aussi complexes...Je débute.
[yugiohjcj.free.fr]
Yu-Gi-Oh! Jeu de Cartes à Jouer
Avatar de l’utilisateur
YuGiOhJCJ
Bébé Chocobo
Bébé Chocobo
 
Messages: 121
Inscription: 22 Fév 2005 21:58
Localisation: Devant mon ordinateur en train de développer

Messagede moi1392 le 03 Juin 2005 18:53

FF0000 c'est rouge ! jaune c'est FFFF00 :oui:

donc pour jaune, tu combine le rouge et le vert !

Code: Tout sélectionner
SDL_SetColorKey( sfc_image->image, SDL_SRCCOLORKEY, sfc_image->image->format->Rmask | sfc_image->image->format->Gmask);


C'est la méthode la plus simple !! a moins de remplacer
"sfc_image->image->format->Rmask | sfc_image->image->format->Gmask" par 0xFFFF00 mais tu n'est pas sur que ça marche !! d'abors, il faut que tu sois en 24 ou 23 bpp, ensuite, selon les cartes graphiques, les couleurs ne sont pas forcément rangées comme ça !!
Donc même si FFFF00 marche chez toi maintenant, il se peut que chez les autres, ou quand tu changeras de carte graphique, ou même lors d'une mise à jour du pilote de la carte, ça ne marche plus !!

sinon, tu peux utiliser SDL_MapRGB pour obtenir une couleur en particulier, il me sembllait que j'en parlais dans un tutorial, mais j'ai du oublier de le mettre...

Code: Tout sélectionner
SDL_MapRGB(sfc_image->image->format, 255, 255, 0);


remarque, ça fait exectement la même chose dans la fonction SDL_MapRGB ! Mais la première méthode à l'avantage de montrer ce qui se passe et de le faire comprendre...
Avatar de l’utilisateur
moi1392
Chocobo des mers profondes
Chocobo des mers profondes
 
Messages: 3986
Inscription: 27 Juin 2004 12:03
Localisation: chez wam

Messagede YuGiOhJCJ le 03 Juin 2005 19:41

mais jamais il ne trouvera sfc_image->image->format->Rmask car ça n'existe pas.
Pour que ça existe il faudrait que je le créé or je ne veux pas.
[yugiohjcj.free.fr]
Yu-Gi-Oh! Jeu de Cartes à Jouer
Avatar de l’utilisateur
YuGiOhJCJ
Bébé Chocobo
Bébé Chocobo
 
Messages: 121
Inscription: 22 Fév 2005 21:58
Localisation: Devant mon ordinateur en train de développer

erreur

Messagede YuGiOhJCJ le 03 Juin 2005 19:46

Car effectivement erreur du compilateur:
Code: Tout sélectionner
essaiSDL.c:70: error: structure has no member named `image'


C'est vraiement le seul moyen de créer la structure?
Je ne peux pas demander de faire de la transparence pour une couleure donnée de l'image sans passer par une structure?
[yugiohjcj.free.fr]
Yu-Gi-Oh! Jeu de Cartes à Jouer
Avatar de l’utilisateur
YuGiOhJCJ
Bébé Chocobo
Bébé Chocobo
 
Messages: 121
Inscription: 22 Fév 2005 21:58
Localisation: Devant mon ordinateur en train de développer

Messagede moi1392 le 03 Juin 2005 19:53

ok.. c'est une erreur de ma part.. je vais la corriger sur le tutorial :oui:

le champ image n'existe effectivement pas dans la structure SDL_Surface !!

donc, dans tout ce que je t'ai dit, tu enlèves la partie "->image" comme ca :


Code: Tout sélectionner
SDL_SetColorKey( sfc_image, SDL_SRCCOLORKEY, sfc_image->format->Rmask | sfc_image->format->Gmask);

et

SDL_MapRGB(sfc_image->format, 255, 255, 0);


c'est une grossière erreur de ma part, je la corrige au plus vite !
Avatar de l’utilisateur
moi1392
Chocobo des mers profondes
Chocobo des mers profondes
 
Messages: 3986
Inscription: 27 Juin 2004 12:03
Localisation: chez wam

Messagede moi1392 le 03 Juin 2005 20:06

voila, c'est corrigé :)

j'en ai aussi profité pour mettre à jour les source, il y a vait quelques commentaires erronés dednas ! ;)
Avatar de l’utilisateur
moi1392
Chocobo des mers profondes
Chocobo des mers profondes
 
Messages: 3986
Inscription: 27 Juin 2004 12:03
Localisation: chez wam

Messagede YuGiOhJCJ le 05 Juin 2005 10:42

ça marche!
Tu as raison! C'est trop génial! Merci beaucoup.:pouce:

Mais pourquoi sfc_soldat1->format correspond à quelque chose d'existant alors que je n'ai jamais déclaré la variable "format"?
C'est la structure SDL_Surface qui la donne?
[yugiohjcj.free.fr]
Yu-Gi-Oh! Jeu de Cartes à Jouer
Avatar de l’utilisateur
YuGiOhJCJ
Bébé Chocobo
Bébé Chocobo
 
Messages: 121
Inscription: 22 Fév 2005 21:58
Localisation: Devant mon ordinateur en train de développer

Messagede moi1392 le 05 Juin 2005 13:00

parce que sfc_soldat1 est de type SDL_surface, c'est une structure qui est déclaré dans /usr/include/SDL/SDL_video.h

et elle possède entre autre un champ "format"
Avatar de l’utilisateur
moi1392
Chocobo des mers profondes
Chocobo des mers profondes
 
Messages: 3986
Inscription: 27 Juin 2004 12:03
Localisation: chez wam

OK

Messagede YuGiOhJCJ le 06 Juin 2005 12:13

OK
[yugiohjcj.free.fr]
Yu-Gi-Oh! Jeu de Cartes à Jouer
Avatar de l’utilisateur
YuGiOhJCJ
Bébé Chocobo
Bébé Chocobo
 
Messages: 121
Inscription: 22 Fév 2005 21:58
Localisation: Devant mon ordinateur en train de développer

Effacer surface

Messagede YuGiOhJCJ le 10 Juin 2005 20:24

En ce qui concerne le déplacement d'un BMP sur l'écran:
le problème: à chaque fois que je donne de nouvelles positions pour la surface du BMP puis que j'affiche cette surface à nouveau:
Code: Tout sélectionner
/*Chargement des variables positions des surfaces*/
SDL_Rect position_soldat1;

/*Définition des positions de soldat1*/
position_soldat1.x=10;
position_soldat1.y=10;

   /*Affichage du soldat1*/
   SDL_BlitSurface(sfc_soldat1, NULL, sfc_fenetre, &position_soldat1);

   /*Mettre à jour l'affichage*/
   SDL_UpdateRect(sfc_fenetre, 0, 0, 0, 0);

/*Incrément position*/
position_soldat1.y--;

   /*Affichage du soldat1*/
   SDL_BlitSurface(sfc_soldat1, NULL, sfc_fenetre, &position_soldat1);

   /*Mettre à jour l'affichage*/
   SDL_UpdateRect(sfc_fenetre, 0, 0, 0, 0);

j'obtient 2 fois l'image sur l'écran.
Moi je voudrai qu'il ne fasse que le déplacer. Or il en créé un second en laissant afficher l'ancien.

Si j'utilise:
Code: Tout sélectionner

      /*Effacement de soldat1*/
      SDL_FillRect(sfc_soldat1, NULL, 0 );

Ca me fait un rectangle noir à la place mais moi je voudrai plutot un rectangle transparent car j'ai affiché aussi un BMP arrière plan derriere sur une autre surface.

Tu comprends mon problème?
[yugiohjcj.free.fr]
Yu-Gi-Oh! Jeu de Cartes à Jouer
Avatar de l’utilisateur
YuGiOhJCJ
Bébé Chocobo
Bébé Chocobo
 
Messages: 121
Inscription: 22 Fév 2005 21:58
Localisation: Devant mon ordinateur en train de développer

Messagede moi1392 le 30 Juin 2005 09:27

la réponse est dans l'autre post que je t'ai fait.
Avatar de l’utilisateur
moi1392
Chocobo des mers profondes
Chocobo des mers profondes
 
Messages: 3986
Inscription: 27 Juin 2004 12:03
Localisation: chez wam


Retourner vers Besoin d'aide en SDL ?

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités

cron