DirectDraw : Blit de surface à surface

Signaler
Messages postés
4
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
15 mai 2004
-
Messages postés
4
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
15 mai 2004
-
salut à tous

j'aurais besoin d'un coup de main avec directdraw. Mon problème : j'ai une surface avec deux couleurs (du vert et du blanc, le vert est la colorkey), je voudrais remplacer tout le blanc par une autre couleur, donnée en paramètre.
Il me semble que la meilleure solution soit de blitter par dessus cette surface une autre surface contenant la nouvelle couleur. Pour le moment, j'arrive à remplacer les deux couleurs (pas trop dur), mais je veux en remplacer qu'une, le blanc !
Je suis un peu perdu avec les différentes colorkey...

Dans le contexte, c'est pour utiliser une police bitmap (qui marche nickel en blanc pour le moment), dont on pourrais modifier la couleur.

merci

2 réponses

Messages postés
546
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
4 mai 2007
1
Passe a directx 9 :) tu pourra gerer la transparence et la rotation facilement.
Sinon tu geres ici la transparence toi meme (que tu sauvegarde dans une surface car le calcul pixel par pixel est assez gourmand :)
Messages postés
4
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
15 mai 2004

Merci pour ta réponse, mais je préfère me limiter pour le moment à directdraw avant de me lancer dans directgraphics.

J'ai finalement réussi à trouver la solution à mon problème, voici le pseudo code à mettre en oeuvre, au cas où quelqu'un en aurait besoin :

- créer une surface temporaire (temp) aux même dimensions que la surface dont il faut changer une des deux couleurs (final)
- remplir temp avec la nouvelle couleur
- blitter final par dessus temp en utilisant comme colorkey la couleur non transparente de final
- copier temp sur final
- supprimer temp
- sauvegarder la couleur actuelle de final pour usage ultérieur

si c'est pas clair, ou si quelqu'un a une meilleure solution, contactez moi