IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XNA/Monogame Discussion :

Changer la couleur d'un pixel d'une texture 2D


Sujet :

XNA/Monogame

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juillet 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juillet 2012
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Changer la couleur d'un pixel d'une texture 2D
    Bonsoir,

    Je fais appel à vous pour un petit problème où les habitués de XNA pourront m'aider rapidement je pense, j'essais simplement de changer la couleur de quelques pixels d'une texture2D :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    map = Content.Load<Texture2D>("map");
     
    Color[] c = new Color[map.Width * map.Height];
    map.GetData(c);
     
    for (int x = 0; x < c.Length; x++)
    {
       if (x < (c.Length/2))
          c[x] = Color.Red;
       else
          c[x] = Color.Blue;
    }
     
    map.SetData(c);
    Donc ce que j'essais de faire c'est juste de mettre la première moitié des pixels en rouge et la deuxième en bleu, mais la texture s'affiche entièrement en bleu et je ne vois pas pourquoi... ma texture de base est toute verte et de taille 128*128.

    P.S : Je tiens à récupérer toute ma texture dans un tableau de color afin de pouvoir travailler autrement dessus par la suite.

    Donc en attendant une réponse je poursuis mes recherches, et je ferai signe si je trouve quelque chose, merci d'avance !

  2. #2
    Membre averti
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Octobre 2008
    Messages : 187
    Points : 448
    Points
    448
    Par défaut
    Bonjour,

    le code marche très bien chez moi, j'ai bien une texture bleue et rouge à l'écran. Je dirais qu'il y a peut-être un problème avec le rendu, peut-tu poster le code qui affiche ta texture à l'écran ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juillet 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juillet 2012
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Salut, merci de prendre le temps de m'aider, alors pour la partie draw :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    protected override void Draw(GameTime gameTime)
    {
       GraphicsDevice.Clear(Color.CornflowerBlue);
     
       // TODO: Add your drawing code here
       spriteBatch.Begin();
     
       spriteBatch.Draw(map, new Vector2(0, 0), null, Color.White,0.0f,new Vector2(map.Width / 2, map.Height / 2), 1.0f, SpriteEffects.None, 0);
     
       spriteBatch.End();
     
       base.Draw(gameTime);
    }
    Après la partie de code que j'ai montré précédement pour changer les couleurs, je l'ai mis dans la foncton "LoadContent" juste après l'initialisation de la texture, j'ai pas mis dans la fonction "Initialize" car la texture n'est pas chargée à ce moment mais c'est ptetre ça qui va pas..

  4. #4
    Membre averti
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Octobre 2008
    Messages : 187
    Points : 448
    Points
    448
    Par défaut
    Dans le code du spriteBatch.Draw, tu affiche la texture en (0,0), avec comme origine le centre de la texture (Width/2, Height/2), donc à l'écran, on ne voit que le quart bas-droit de ta texture, qui est bleu.

    Change l'argument :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new Vector2(map.Width / 2, map.Height / 2)
    en

    ça résoudra ton problème

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juillet 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juillet 2012
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Oui effectivement fallait pas chercher bien loin x') ça m'apprendra à copier-coller mon code même pour tester certains trucs, merci beaucoup pour ton aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Changer la couleur de certaines lignes ds une liste
    Par Ragnarok85 dans le forum Access
    Réponses: 4
    Dernier message: 04/01/2007, 10h18
  2. Obtenir la couleur d'un pixel d'une PictureBox
    Par avigeilpro dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 30/06/2006, 22h17
  3. Comment changer la couleur d'un item d'une listBox?
    Par Mickey.jet dans le forum Delphi
    Réponses: 3
    Dernier message: 19/05/2006, 16h52
  4. Réponses: 1
    Dernier message: 26/03/2005, 12h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo