Affichage dans une picturebox [Visual C++]

Affichage dans une picturebox [Visual C++] - C++ - Programmation

Marsh Posté le 27-12-2004 à 14:58:35    

Bonjour à tous,
 
J’ai deux picturebox dans ma fenêtre (c’est un document MDI – FormView) et j’affiche une image dans chacune. Ces picturebox représentent des aperçus et je souhaiterais afficher une image au choix dans une troisième picturebox directement par un clic sur la picturebox d’aperçu. Est-ce possible ? Moi je n’y arrive pas… Par un simple clic sur une picturebox, je ne parviens même pas à afficher un simple message (comme on peut faire avec un bouton).
 
Merci d'avance   :jap:  

Reply

Marsh Posté le 27-12-2004 à 14:58:35   

Reply

Marsh Posté le 27-12-2004 à 16:46:48    

oui c'est possible via un LoadImage, lit bien la MSDN pour la charger à partir d'un fichier et pas d'une ressource!(si tu la charge à partir d'un fichier)!
ensuite tu recupere donc un HBITMAP que tu dessines via la methode DrawState!  
tu n'as pas besoin d'un picturebox! (juste pour la déco si tu veux, histoire d'avoir un cadre ;))

Reply

Marsh Posté le 27-12-2004 à 21:15:53    

Merci pour cette réponse,
 
Il faut savoir que je ne maîtrise pas vraiment tout sur Visual C++ (loin de là malheureusement)...
Je te montre donc comment je fais pour charger mon image :
 
 
 m_bmpCtrl.LoadFile("C: / .../   .bmp" );  
  // où m_bmpCtrl est une variable liée à ma picturebox
 
Avec la fonction LoadFile correspondante :
 
 void CBitmapCtrl::LoadFile(CString filename)
 {
  HBITMAP hBitmap = (HBITMAP) LoadImage(NULL, filename,  
                                  IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE |  
                                  LR_CREATEDIBSECTION | LR_DEFAULTSIZE);
  SetBitmap(hBitmap);
 }

 
J'utilise donc la fonction que tu me conseille : LoadImage...
 
A ce niveau du message, je me demande si je me suis bien expliqué. Pour moi l'affichage d'une image dans une Picture, CA MARCHE. Mais le problème c'est le fait (je vais essayer d'être plus précis) par un clic sur une image que j'ai déjà affichée dans une des Picturebox, d'afficher cette dernière (pour moi en plus grand).
 
C'est ce que je ne parviens pas à faire.
 
Il faut savoir que ce n'est que le début du problème, car en fait dans les picturebox dites d'aperçu je n'aurais pas tout le temps la même image (choix de l'utilisateur par le biais d'un menu sous forme de boutons (ce qui chargera différents thèmes dans la zone d'aperçu)), il faudra donc que je puisse "capturer" l'image présente (ou son chemin par je ne sais quelle méthode).
 
Est-ce que tu avais compris mon problème, et si oui pourrais-tu m’en dire davantage et peut être répondre au second problème que j’ai évoqué.
 
Merci encore pour l’intérêt que tu portes à mon problème.

Reply

Marsh Posté le 28-12-2004 à 12:36:47    

pour le clik regarde du coté des evenments souris, si tu taff sous VC++, tu peux genérer des fontions par rapport a des evenemnts (clik sur bouton gauche, droit etc..) ces fonctions te file en param le point(x,y) ou tu as cliké!  
 
donc je pense qu'il te faut distinguer 2 evenments:
 - Le clik gauche enfoncé sur la souris correspondant  
   au msg "WM_LBUTTONDOWN" à ce moment tu charges  l'image  
   ds ta HBITMAP.
 
 -Le clik gauche relaché "WM_LBUTTONUP" à ce moment  
  recuperes donc ta hbitmap et tu l'affiche tt simplement!
 
pour generer les methodes d'evenements par visual studio dans ton "class view" fait un clik droit sur la classe qui contient ta picture box et tu selectionnes "add windows message handler" une fenetre s'ouvre avec tous les evenements que tu peux generer, tu choisis ce qui te conviennent!
voila si j'ai pu t'eclaircir encore un peu...
 

Reply

Marsh Posté le 28-12-2004 à 22:52:54    

Merci beaucoup,
 
j'ai maintenant de quoi avancer.  :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed