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

MFC Discussion :

Bitmap déformé


Sujet :

MFC

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 230
    Par défaut Bitmap déformé
    Voila, j'ai un problème avec certaines bitmaps.

    Lorsque je les incluent dans les ressources, les bitmaps sont normales, mais dès que je les affiches dans une fenêtre, elle sont légèrement décalé vers le haut et vers la droite, remplissant les espaces vides par des couleurs bizarres.

    J'ai éssayé de les inclures directement à partir des fichiers, mais le résultat est encore pire.

    Alors que certaines bitmaps que j'ai récupérer à d'autres endroits marche très bien.

    Donc si quelqu'un a déjà eu ce problème, je l'en remercie de m'aider.

    Je précise, je n'utilise que des bitmaps en 256 couleurs.

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    tu as essayé sur une autre machine ?
    le bitmap s'affiche normalement quand tu utilises paint par exemple ?

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 230
    Par défaut
    Non, je n'ai pas essayé sur d'autres machines.

    Et avec Paint, oui elle s'affiche bien, avec l'éditeur de ressource de Visual C++ aussi d'ailleur. C'est qu'au moment de l'affiche à l'écran pendant l'exécution que ca déconne.

    Mais comme je l'ai dit plus haut, je ne pense pas que ca vienne de ma classe Bitmap car les images que je prend sur un CD d'exercice marche impeccable.

    Je pense plutôt que ca vient de la méthode de création de la bitmap, mais je ne vois pas pourquoi et surtout comment.

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    et bien il te reste a nous montrer comment tu crees tes bitmaps,
    et comment tu les affiches.


  5. #5
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 230
    Par défaut
    Le constructeur appel juste la fonction Create que voici ( je ne donne que celle à partir des ressources) :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    BOOL Bitmap::Create(HDC hDC, int iWidth, int iHeight, COLORREF crColor)
    {
      // Create a blank bitmap
      m_hBitmap = CreateCompatibleBitmap(hDC, iWidth, iHeight);
      if (m_hBitmap == NULL)
        return FALSE;
     
      // Set the width and height
      m_iWidth = iWidth;
      m_iHeight = iHeight;
     
      // Create a memory device context to draw on the bitmap
      HDC hMemDC = CreateCompatibleDC(hDC);
     
      // Create a solid brush to fill the bitmap
      HBRUSH hBrush = CreateSolidBrush(crColor);
     
      // Select the bitmap into the device context
      HBITMAP hOldBitmap = (HBITMAP)SelectObject(hMemDC, m_hBitmap);
     
      // Fill the bitmap with a solid color
      RECT rcBitmap = { 0, 0, m_iWidth, m_iHeight };
      FillRect(hMemDC, &rcBitmap, hBrush);
     
      // Cleanup
      SelectObject(hMemDC, hOldBitmap);
      DeleteDC(hMemDC);
      DeleteObject(hBrush);
     
      return TRUE;
    }
    Et voici les méthodes de dessins ( "les" car je peux dessiner une partie du bitmap seulement) :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    void Bitmap::Draw(HDC hDC, int x, int y, BOOL bTrans, COLORREF crTransColor)
    {
      DrawPart(hDC, x, y, 0, 0, GetWidth(), GetHeight(), bTrans, crTransColor);
    }
     
    void Bitmap::DrawPart(HDC hDC, int x, int y, int xPart, int yPart, int wPart, int hPart, BOOL bTrans, COLORREF crTransColor)
    {
    	if (m_hBitmap != NULL)
    	{
    		// Création d'un contexte de périphérique en mémoire pour le bitmap
    		HDC hMemDC = CreateCompatibleDC(hDC);
     
    		// Sélection du bitmap dans le contexte de périphérique
    		HBITMAP hOldBitmap = (HBITMAP)SelectObject(hMemDC, m_hBitmap);
     
    		// Dessin du bitmap sur le contexte de périphérique de destination
    		if (bTrans)
    			TransparentBlt(hDC, x, y, wPart, hPart, hMemDC, xPart, yPart, wPart, hPart, crTransColor);
    		else
    			BitBlt(hDC, x, y, wPart, hPart, hMemDC, xPart, yPart, SRCCOPY);
     
    		// Restauration et suppression du contexte de périphérique en mémoire
    		SelectObject(hMemDC, hOldBitmap);
    		DeleteDC(hMemDC);
    	}
    }
    Mais je ne pense pas que le code vous soit utile car ca marche avec certaine bitmap, j'espérais plutôt tomber sur quelqu'un à qui c'était déjà arrivé.

    Enfin, si vous arrivé à trouver une erreur, tant mieux.

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/10/2002, 18h26
  2. transfert d'un fichier bitmap en socket tcp
    Par localhost dans le forum C++Builder
    Réponses: 5
    Dernier message: 29/07/2002, 00h40
  3. Pb Lecture de bitmap monochrome
    Par Loïc38 dans le forum C++Builder
    Réponses: 4
    Dernier message: 02/07/2002, 18h24
  4. Lecture d'une image bitmap
    Par Geronimo dans le forum x86 32-bits / 64-bits
    Réponses: 18
    Dernier message: 28/06/2002, 12h01
  5. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 15h41

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