Image + Sprite

nounours21_6 Messages postés 255 Date d'inscription mercredi 3 novembre 2004 Statut Membre Dernière intervention 21 avril 2009 - 27 févr. 2007 à 11:49
 Sirel976 - 4 janv. 2014 à 18:38
Bonjour tout le monde,

je dévoloppe un jeu 2D, un labyrinthe, en C# .NET2 sous visual studio 2005
et je dois faire l'animation du petit bonhomme avec une image de ce style :

J'ai vu qu'il faut utiliser un sprite,
le principe est de diviser l'image en plusieurs cellules (12 pour l'exemple) et d'afficher une cellule en fonction du besoin!

mais c'est la que je bloque, je ne sais comment faire pour créer un sprite, et l'utiliser...

Merci d'avance
Enjoy @+
<<--<<--nOUnoURs-->>-->>

7 réponses

MasterShadows Messages postés 268 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 19 avril 2012 12
27 févr. 2007 à 15:15
Salut, pourrais-tu être un peu + précis (tu utilise quoi ? le GDI, DirectX, XNA...) Si c'est du XNA, MP moi je t'aiderais...

Cordialement...
0
nounours21_6 Messages postés 255 Date d'inscription mercredi 3 novembre 2004 Statut Membre Dernière intervention 21 avril 2009
27 févr. 2007 à 15:24
Franchement, j'en sais rien... il me semble que c'était du DirectX!
Ensuite, si ca marche en GDI ou XNA, pourquoi pas!

Enjoy @+
<<--<<--nOUnoURs-->>-->>
0
nounours21_6 Messages postés 255 Date d'inscription mercredi 3 novembre 2004 Statut Membre Dernière intervention 21 avril 2009
27 févr. 2007 à 15:48
Rectification :
dans l'exemple, il faut 16 cellules au lieu de 12!!
(4*4 = 16)

<<--<<--nOUnoURs-->>-->>
0
MasterShadows Messages postés 268 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 19 avril 2012 12
27 févr. 2007 à 16:14
Ben en fait suivant la méthode que l'on prend, on se fiche de savoir combien d'images il y'a à afficher, je vais te donner ma méthode (mode XNA : ON)

Tout d'abord on va créer quelques variables :

int m_iNbFramesWidth; // Nombre d'images dans la largeur de la texture (ici 4)
int m_iNbFramesHeight; // Nombre d'images dans la hauteur de la texture (ici 4)
int m_iFrameWidth; // largeur d'une image
int m_iframeHeight; // Hauteur d'une image
Rectangle m_rcSource; // Pour que l'on connaisse l'image à afficher
Texture2D m_txSprite; // Pour la création du sprite
int m_iCurrentSprite; // Sprite actuel à afficher

// Ensuite une propriété
public int CurrentSprite
{
get { return m_iCurrentSprite; }
set { m_iCurrentSprite = value; }
}

// Ensuite le ctor
public CSprite(Texture2D tex, int NbFramesWidth, int NbFramesHeight)
{
m_txSprite = tex;
m_iNbFramesWidth = NbFramesWidth;
m_iNbFramesHeight = NbFramesHeight;
m_iFrameWidth = m_txSprite.Width / m_iNbFramesWidth;
m_iFrameHeight = m_txSprite.Height / m_iNbFramesHeight;
}

et ensuite dans ta méthode de dessin (bon là on considère qu'on le place dans une position par défaut, le but c'est d'afficher l'image que tu veux):

public void RenderSprite(SpriteBatch sb, Rectangle rcDest)
{
m_rcSource = new Rectangle((m_iCurrentSprite % m_iNbFramesWidth) * m_iFrameWidth,
(m_iCurrentSprite / m_iNbFramesWidth) * m_iFrameHeight,
m_iFrameWidth, m_iFrameHeight);

sb.Draw(m_txSprite, rcDest, m_rcSource, Color.White);
}

En espérant que ça t'ai aidé,

cordialement
0
Merci ! beaucoup
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nounours21_6 Messages postés 255 Date d'inscription mercredi 3 novembre 2004 Statut Membre Dernière intervention 21 avril 2009
27 févr. 2007 à 16:29
merci bien, je vais voire ce que je peux faire avec... lol
il faut importer quoi comme référence? car il y a une erreur sur Texture2D!

sinon, j'utilise une PictureBox, elle se déplace normalement dans le labyrinthe
et est-ce que je peux m'en servir?
par exemple : this.maPB.image = sb.draw()
ou un truc comme ca?

Merci pour ta source
Enjoy @+
<<--<<--nOUnoURs-->>-->>
0
MasterShadows Messages postés 268 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 19 avril 2012 12
27 févr. 2007 à 16:45
Ben en fait ma source est du XNA il faut donc importer la réference Microsoft.XNA.Framework, par contre tu utilise une picturebox donc c'est du GDI, alors là je ne peux pas t'aider (mais la formule m_rcSource tu peux t'en servir)
0
nounours21_6 Messages postés 255 Date d'inscription mercredi 3 novembre 2004 Statut Membre Dernière intervention 21 avril 2009
27 févr. 2007 à 17:09
Oki, je te remercie...

Enjoy @+
<<--<<--nOUnoURs-->>-->>
0
Rejoignez-nous