Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1522 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [GDI+] Image et Frames : comment ça marche ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[GDI+] Image et Frames : comment ça marche ?

n°1295804
Arjuna
Aircraft Ident.: F-MBSD
Posté le 31-01-2006 à 19:10:08  profilanswer
 

Salut,
 
Question bête :
En C#, l'objet "Image" contient une collection "Frames".
 
Ca sert à quoi au juste ? A lire les "frames" d'un GIF animé ? Ou lire par morceaux une image (comme c'est stocké dans une animation "fli" par exemple.
 
Par exemple, j'ai cette image (certains auront reconnu les graphismes de Civilization II ;))
http://magicbuzz.multimania.com/files/TERRAIN1.GIF
(ce jeu est passé sous domaine public, je pense donc que ça ne pose pas de problème de diffuser certains fichiers le constituant)
 
Est-ce que "Frames" peut m'aider à récupérer chaque sous-image constituant ce gros GIF ? Ou si je suis obligé de prendre l'image, puis faire un bon gros Crop() de grand-mère dessus ?
(a noter que je sopçonne d'être obligé de faire ça de toute façon, puisque certains fichiers GIF ont des "Frames" de tailles différentes, ou comme ici, des offsets inégaux).
 
Question subsidiaire : dans cette image, la transparence est... comment dire... on a fait mieu [:atari]  
 
J'ai cherché je ne sais combien de temps dans tous les sens... J'ai beau mettre une couleur dans "TransparentColor", c'est jamais transparent !

Message cité 1 fois
Message édité par Arjuna le 31-01-2006 à 19:15:29
mood
Publicité
Posté le 31-01-2006 à 19:10:08  profilanswer
 

n°1295841
Arjuna
Aircraft Ident.: F-MBSD
Posté le 31-01-2006 à 19:43:19  profilanswer
 

Pour la transparence, j'ai fini par réussi (chais pas pourquoi ça marhait pas...)
 
Si y'a moyen de faire plus propre que de passer par un objet Bitmap temporaire... (sâchant par contre que je doit de toute façon recopier mon image en mémoire après le chargement, afin de shooter le handle sur le fichier)
 

Code :
  1. Bitmap tmp = (Bitmap)Image.FromFile("pictures/units/test.GIF", true);
  2.             tmp.MakeTransparent(Color.White);
  3.             tmp.MakeTransparent(Color.Black);
  4.             this.image = (Image)tmp;


Message édité par Arjuna le 31-01-2006 à 19:44:49
n°1295907
Arjuna
Aircraft Ident.: F-MBSD
Posté le 31-01-2006 à 21:12:40  profilanswer
 

Bon, ben vu que ça répond à fond à mes questions... Je suis passé du future hipothétique mode isométrie avec "des jolis graphismes que c'est pas moi qui les ai fait" à une vue traditionnelle (pensez aux années 80 :D) avec "des graphiques tout moches que c'est moi qui les ai fait"
 
QQ1 peut me dire ce qui ne va pas dans mon code ?
Pour moi y'a tout qui va, mais vu que j'ai jamais fait ce genre de programme, je suis sûr que tout est à améliorer (comment ça la lisibilité ?)
 
http://magicbuzz.multimania.com/files/MagicCiv.zip (55 Ko)
 
A la base, normalement y'a un "monde" de 4x4 qui se charge avec deux types de terrains différentes
et sur la case en haut à gauche deux "unités" (un 1 et un 2) et on peut bouger l'unité 1 au clavier (flèches)
 
pour ze reste, tout est encore à faire :)
 
y'a juste un truc qui me turlupine : j'ai l'impression que malgré mes "super optimisations de la mort qui tue" dans le "OnPaint", il redessine tout, chais pas pourquoi...
-- Edit : A nan, après tests, ça redessine que ce qu'il faut (en fait, ça redessinait même pas tout ce qu'il fallait quand on redimensionnait ;))
 
Vous noterez que je me suis amusé à me baser sur des fichiers XML pour la plupart des paramètres (faut que j'en mette encore, genre la taille des images), comme ça on peut changer les "données de test" comme on veux ;)


Message édité par Arjuna le 31-01-2006 à 21:34:06
n°1296238
Setaio
Posté le 01-02-2006 à 11:49:01  profilanswer
 

Citation :

(ce jeu est passé sous domaine public, je pense donc que ça ne pose pas de problème de diffuser certains fichiers le constituant)


 
 :non: Le jeux n'est pas passé sous le domaine public...A la rigueur tout ce qui est brevé tournant autour du jeux oui mais il faudra quelques dizaines d'années pour que ca passe sous le domaine public ( à moin que sid meier le font eux mêmes ).
 
Par contre je regarderais un peu ton code plus tard, je n'ai jamais touché au GDI+ ca serait intéressant de voir :o  ( surtout que j'adorre C2 :o )

n°1296391
_Mose_
Lonesome coder
Posté le 01-02-2006 à 14:27:23  profilanswer
 

Arjuna a écrit :

Est-ce que "Frames" peut m'aider à récupérer chaque sous-image constituant ce gros GIF ? Ou si je suis obligé de prendre l'image, puis faire un bon gros Crop() de grand-mère dessus ?
(a noter que je sopçonne d'être obligé de faire ça de toute façon, puisque certains fichiers GIF ont des "Frames" de tailles différentes, ou comme ici, des offsets inégaux).

Tu supposes bien :)

Arjuna a écrit :

Question subsidiaire : dans cette image, la transparence est... comment dire... on a fait mieux J'ai cherché je ne sais combien de temps dans tous les sens... J'ai beau mettre une couleur dans "TransparentColor", c'est jamais transparent

Si tu charges tes bouts d'image dans tes objets Bitmap, il te suffit d'utiliser la méthode MakeTransparent et de lui passer le code argb de ce magnifique rose fluo.
 
Pour ton second post, j'ai pas le tps de regarder ton code, mais je pense que mon post précédent sur le Double Buffering devrait t'aiguiller.
http://forum.hardware.fr/hardwaref [...] 4009-1.htm


Message édité par _Mose_ le 01-02-2006 à 14:28:11

---------------
Tout est normal, suffit de comprendre pourquoi.
n°1296464
Arjuna
Aircraft Ident.: F-MBSD
Posté le 01-02-2006 à 15:17:53  profilanswer
 

j'attends tes explications sur le double buffering :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [GDI+] Image et Frames : comment ça marche ?

 

Sujets relatifs
[C#] GDI : Redessiner une partie de la fenêtre sur OnPaintCondition qui ne marche pas ...
[Java ]Déplacer une imageaccéder un a un pixel d'une image sous C++builder(borland)
Encodage d'une image au format jpgclic sur une image en php
Software d'édition d'image sous RedHat en ligne de commande[php] image et rtf
Redimensionner une image à partir de 4 points (et non 2)L'affichage d'une ligne cachée via css ne marche pas avec ie
Plus de sujets relatifs à : [GDI+] Image et Frames : comment ça marche ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR