Miniature -> agrandir

Résolu
Utilisateur anonyme - 3 oct. 2006 à 09:17
 Utilisateur anonyme - 3 oct. 2006 à 17:35
Bonjour,
Voila tout d'abord je suis en C++ avec les MFC et la librairie GDI+.
J'ai une liste a droite qui m'affiche les images d'un dossier en miniature, et j'aimerais, lorque je clique sur une es images, qu'elle s'affiches en grand (320*240 par exemple) dans la picturebox d'à côté !
Or je ne sais pas vers quelles fonctions me tourner, car je crois qu'il doit y avoir beaucoup de mathémathiques en plus la dedans...!

Donc si vous connaisser ce genre de problèmes, les fonctions GDI+ qui vont avec, ou autres...

Merci d'avance.

1 réponse

Utilisateur anonyme
3 oct. 2006 à 17:35
solution EN GROS :

void CEssaiDlg::OnClickListeImagette(NMHDR* pNMHDR, LRESULT* pResult)
{
 // TODO: Add your control notification handler code here
 LPNMITEMACTIVATE pItemAct = (LPNMITEMACTIVATE)pNMHDR;




 LVHITTESTINFO  hitTest;
 memset(&hitTest, '\0', sizeof(LVHITTESTINFO));
 hitTest.pt = pItemAct->ptAction;
 m_cListeImagette.SendMessage(LVM_SUBITEMHITTEST, 0, (LPARAM)&hitTest);


 // Dessine l'image selectionnee
 if(hitTest.iItem != m_nSelectedItem && hitTest.iItem >= 0)
 {
  m_nSelectedItem = hitTest.iItem;
  m_bImage=TRUE;
  ChargeImage(m_nSelectedItem);
 } 
 *pResult = 0;
}




void CEssaiDlg::ChargeImage(int m_nSelectedItem)
{
 //Nouvelle fonction utilisant la bibliothèque gdi+ 
 using namespace Gdiplus;
 CString sDossier;
 CString strPath;


 int m_nLargeurImageSource,m_nHauteurImageSource;
 //double m_fRapportImage;
 //double m_fAgrandissement;




 LPCWSTR pszWide;




 // Lecture du fichier image
 strPath=m_VectorImageNames[m_nSelectedItem];


 USES_CONVERSION;   
 pszWide= A2CW(strPath);    //utilisation des macro de conversion string vers const wchar*
 //Chargement de l'image
 Bitmap BitmapSource(pszWide);  //Chargement de l'image


 //Dimensions de l'image source
 m_nLargeurImageSource=BitmapSource.GetWidth();
 m_nHauteurImageSource=BitmapSource.GetHeight();


 AfficheImage(&BitmapSource);


}


 


void CEssaiDlg::AfficheImage(Bitmap *BitmapAffiche)
{
 //La variable m_bAfficheImage peut être utilisée pour autoriser l'affichage de l'image
 //Surface d'affichage
 CDC*  pDC= m_cImageRect.GetDC();
 //Définition de l'objet graphique
 CRect m_Rect;
 //m_cImageRect.GetWindowRect(&m_Rect);
 m_cImageRect.GetClientRect(&m_Rect);
 Graphics graphicAffiche(pDC->m_hDC);
 CBrush brush;
 brush.CreateSolidBrush(RGB(0,0,0));
 //fond noir
 pDC->FillRect(m_Rect,&brush);  //On a pris le getdc de m_cImageRect donc le pt 0,0 est le bord de m_cImageRect
 //image
 //graphics.DrawImage(image, ImageDesRectf, SrcRectf,UnitPixel,NULL);


  /*CDC* pDC=m_cImageRect.GetDC();
 HDC hDCImage=CreateCompatibleDC(*pDC);
 SelectObject(*hDCImage,BmpResu);
 BitBlt(pDC,m_RectImage.left,m_RectImage.top,m_RectImage.Width(),m_RectImage.Height(),hDCImage,0,0,SRCCOPY);


*/
 graphicAffiche.DrawImage(BitmapAffiche,m_Rect.left,m_Rect.top,m_Rect.Width(),m_Rect.Height()); 
}
3
Rejoignez-nous