begin process at 2012 05 28 07:49:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Charger un BMP avec une OpenFileDialog et l'afficher dans un pictureBox .


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Charger un BMP avec une OpenFileDialog et l'afficher dans un pictureBox .

mardi 21 octobre 2003 à 14:35:39 | Charger un BMP avec une OpenFileDialog et l'afficher dans un pictureBox .

Dragoon

Bonjour à tous,

Je ne suis pas un spécialiste du C++ et des MFC et je souhaiterais comprendre ce qui ne va pas dans mon programme.
Je voudrais que celui-ci affiche une image BMP dans un picture box après que l'utilisateur l'ai choisi via une boite de type OpenFileDialog. Ceci ne doit, je pense, pas etre trop difficile à effectuer dans la mesure ou la meme chose en VB ou Csharp est simplissime.
Voici mon code :

void CGestionImageDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
// m_image = nomImage;
// UpdateData(FALSE);
CDialog::OnPaint();
}
}

// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CGestionImageDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}


/// Chargement de l'image

void CGestionImageDlg::OnButtonParcour()
{
// TODO: Add your control notification handler code here
// TODO: Add your control notification handler code here



UpdateData(TRUE); // Récup de l'état des autres zones de saisie
// Définition des filtres pour l'ouverture des fichiers

char szFilters[]= "Images Bitmap (*.bmp)|*.bmp,*.BMP|Tout les fichiers (*.*)|*.*||";

// Création de la boite de dialogue d'ouverture de fichiers
CFileDialog dialogOuvrir (TRUE, "", "*.bmp", OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, szFilters, this);

// Affichage de la boite de dialogue
// Affichage du bitmap dans le PictureBox de la feuille
if( dialogOuvrir.DoModal ()==IDOK )
{
CString cheminImage = dialogOuvrir.GetPathName();

// Ouverture et lecture du fichier
// Récupération du handle de l'iamge chargée

CWnd * hWndViewer = this->GetDlgItem(IDC_STATIC_PICTURE);
CDC * dcControlePicture = hWndViewer->GetDC ();
CString nomImage = dialogOuvrir.GetFileName ();


// Chargement du bitmap

HBITMAP hBitmap = (HBITMAP)LoadImage( 0, dialogOuvrir.m_ofn.lpstrFileTitle, IMAGE_BITMAP, 0,0, LR_LOADFROMFILE| LR_CREATEDIBSECTION | LR_DEFAULTSIZE);

// Associer IMAGE au control PictureBox



hWndViewer->SendMessage( STM_SETIMAGE,
(WPARAM) IMAGE_BITMAP,
(LPARAM) hBitmap );



//On change le titre de la feuille avec le nom du Fichier

this->m_cheminImage= dialogOuvrir.m_ofn.lpstrFile;

SetWindowText(nomImage);

UpdateData (FALSE);
}
return;


}

Ceci ne créé aucun messages d'eereur, mais au final l'image ne s'affiche pas. Je pense que mon probleme se situe autour de la fonction LoadImage(...), mais je ne vois pas ou et ceux malgré mes recherches (MSDN, Livres, Forums...)

Si quelqu'un a une idée ou une explication, j'en serais très heureux.

A++ et merci d'avance
Dragoon
mardi 21 octobre 2003 à 15:51:47 | Re : Charger un BMP avec une OpenFileDialog et l'afficher dans un pictureBox .

garslouche

Plusieurs choses:
- d'abord évite d'envoyer un code dont la moitié ne sert à rien!

- pour ton prog, il faut que tu aies le type Bitmap à ton image (utilise l'interface de Visual C++ pour ça).

- De plus remplace ta déclaration de hWndViewer par :
CStatic * hWndViewer = (CStatic*) GetDlgItem(IDC_STATIC_PICTURE);


- Et SendMessage n'est pas utile dans ce cas là (c'est même pour les éviter qu'on utilise les MFC) :
remplace le par
hWndViewer->SetBitmap(hBitmap);


Voilà!
mardi 21 octobre 2003 à 16:10:44 | Re : Charger un BMP avec une OpenFileDialog et l'afficher dans un pictureBox .

Dragoon

Merci beaucoup pour la réponse Garslouche.

Mon probleme reste pourtant le même, a savoir que mon BMP ne s'affiche pas, je pense que mon problème réside dans la ligne suivante



HBITMAP hBitmap = (HBITMAP)LoadImage( 0, file.GetFileName(), IMAGE_BITMAP, 0,0, LR_LOADFROMFILE| LR_CREATEDIBSECTION | LR_DEFAULTSIZE);


car quand je teste avec une clause if du type :


if (! hBitmap)
{
MessageBox ("Raté");
}


qui me permet de tester si le HBITMAP contient quelque chose , j'ai toujours mon messagebox qui s'affiche.

Ceci dit je ne comprends toujours pas pourquoi cela ne marche pas.

Merci beaucoup, a++.

A++
Dragoon
mercredi 22 octobre 2003 à 15:32:29 | Re : Charger un BMP avec une OpenFileDialog et l'afficher dans un pictureBox .

Dragoon

Ca Marche, ton truc etait parfait Garslouche. MERCI BEAUCOUP.
A++
Dragoon
lundi 7 février 2005 à 15:37:54 | Re : Charger un BMP avec une OpenFileDialog et l'afficher dans un pictureBox .

vaas

Par contre moi je n'y arrive toujours pas jai copier le code de dragoon et fait les modif demandé par garslouche ais rien a faire il n'y a pas d'erreur explicite mai ne m'affiche toujours pas l'image y'a tilm des headers a mettre ou otre chose a faire pouyr ke cela fonctionne


Cette discussion est classée dans : image, picturebox, bmp, bitmap, dialogouvrir


Répondre à ce message

Sujets en rapport avec ce message

chargement dynamique d'image (bitmap ?) [ par Gendal67 ] Bonsoir,J'aimerai savoir si une application peut charger autre chose qu'une image bmp comme une image jpg....genre comme :BMP BITMAP DISCARDABLE "lol. afficher bmp dans une picturebox en mfc [ par titouf71 ] bonjourJe suis débutant en c++ et je cherche a afficher une image au format bmp.J'ai crée un nouveau projet en mfc et je veux afficher cette image dan Convertion d'un bitmap 8 bits en un bitmal 24 bits [ par SauCisS ] Bonjour, J'ai parcouru ce forum pour chercher ma réponse, mais sans succès. Alors voici mon problème : Comment à partir d'une image BMP 8 bits niv Redimensionnement image Borland C++ [ par jfouquet ] Bonjour, Je travaille actuellement sous Borland C++ 5. Je suis amené à afficher une image (jpeg,bmp,ico…) dans un TImage bon ça pas de problème. Ma redimenssion image avec hbitmap [ par glipper ] bonjour,j'ai reussi à charger une image depuis un fichier, et la faire apparaître dans un boutons (dans une dialogbox). J'ai donc procédé comme ceci : Conversion image BMP [ par emrod ] Salut, j'aimerais convertir une image BMP 16 bits en image BMP 24 bits, est-ce qu'il existe une fonction ou un programme pour faire ça ?En fait, j'ai image dans CListCtrl [ par catamenia ] bonjour,je voudrais faire apparaitre des bitmap dans ma CListCtrlj'ai essayé ceci :    CBitmap bmp;     Mobile-5.05\\custsymb\\CHUR1-32.BMP");    int ressources dev-cpp [ par deck_bsd ] Bonjour,Voila je veu mettre une image dans un controle static. Tout vas bien pour ce qui est des OBM (OBM_CHECK,...) tout s'affiche parfaitement. Le p [VB6] Faire pivoter une IMAGE ( pas une pictureBox ) [ par pitbull42 ] Bonjour , j'aimerais savoir comment faire pour faire pivoter une IMAGE et non une picture box , j'ai trouver plein de source sur ccpfrance ou sur vbfr images bitmap [ par CeNedra83 ] je code en C++ sous visual 2003.NET et je dispose d'une image sous la forme de trois tableaux de composantes X, Y et Z. je voudrais créer une image BM


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales