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 :

[MFC - GDI] Redimensionnement Image


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 8
    Points : 6
    Points
    6
    Par défaut [MFC - GDI] Redimensionnement Image
    Bonjour,

    Je développe sous Visual C++ 6.0 via MFC, et j'aimerai afficher une image redimensionnée sur une CStatic, à partir d'une image répertoire.

    J'utilise pour cela GDI que j'ai découvert il y a peu.
    Après consultation de la FAQ et de pas mal de documentations ici et ailleurs, je ne trouve pas la solution à mon problème.

    Note : Sans passer par un Device Context, j'ai pu afficher mon image sans la redimensionner. -> seul le redimensionnement ne fonctionne pas.

    Voilà mon code. ou est le problème selon vous ?!

    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
     
    	//Création du handle sur le bitmap
    	HBITMAP hBitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(), "Z:\\image.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
     
    	// Création d'un DC par rapport au contexte courant
    	HDC hDCBmp = CreateCompatibleDC(NULL);
     
    	// Selection du Bitmap dans le contexte crée
    	HBITMAP hOldBmp = (HBITMAP)SelectObject(hDCBmp, hBitmap);
     
    	// récupération des Infos bitmap
    	BITMAP bmpInfo;
    	GetObject(hOldBmp, sizeof(bmpInfo), &bmpInfo);
     
    	// Structure pour le redimensionnement
        CSize Size(bmpInfo.bmWidth /2 , bmpInfo.bmHeight /2);
     
    	// Redimensionnement de l'image dans le contexte
        StretchBlt(hDCBmp,0, 0, Size.cx,Size.cy, hDCBmp, 0, 0,bmpInfo.bmWidth, bmpInfo.bmHeight,SRCCOPY); 
     
    	// Séléction de l'image redimensionnée dans le contexte
    	SelectObject(hDCBmp, hOldBmp);
     
    	//Affichage
    	m_imgz.SetBitmap(hOldBmp); 
    	m_imgz.Invalidate();
     
    	//Déstruction du contexte
    	DeleteDC(hDCBmp);
    Merci d'avance !


  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
    Points : 17 323
    Points
    17 323
    Par défaut
    salut
    voir faq a moins que tu te sois inspiré de ce code).
    http://c.developpez.com/faq/vc/?page=GDI#StretchBitmap

    ton code diminue la taille du bitmap. et tu as un probleme avec tes DC.

    Note : il est plus simple d'utiliser les classes MFC que de travailler directement avec les handle .

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Je m'en suis inspiré en partie en effet, mon code devrait reproduire le même résultat en principe.

    Seule chose, la fonction StretchBlt prend 10 paramètres chez moi, et non 9 comme sur l'exemple de la FAQ
    La FAQ = fonction CDC ; la mienne = fonction GDI, on précise simplement le contexte de destination.

    Du coup je ne vois toujours pas où est le soucis.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Bien, je n'ai finalement pas trouvé mon problème, mais j'ai trouvé une bonne librairie qui me permet de faire ce que je veux.

    Faute de mieux ... (et puis pourquoi réinventer la roue )

    Voilà le lien :
    http://www.codeproject.com/bitmap/PreviewCtrl.asp

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/09/2006, 17h33
  2. [MFC] ListCtrl et images
    Par joujou_le_fou dans le forum MFC
    Réponses: 2
    Dernier message: 26/07/2005, 14h49
  3. Réponses: 8
    Dernier message: 17/04/2005, 19h58
  4. [MFC]Insérer une image dans un CListCtrl
    Par DestyNov@ dans le forum MFC
    Réponses: 8
    Dernier message: 04/03/2005, 14h36
  5. [mfc][gdi] un tuto ?
    Par VitamineC dans le forum MFC
    Réponses: 8
    Dernier message: 06/02/2004, 22h51

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