commenter un source qui affiche une image BMP à l'écran

commenter un source qui affiche une image BMP à l'écran - C++ - Programmation

Marsh Posté le 04-03-2004 à 13:16:46    

j'ai récupéré ce source :

Code :
  1. void CAfficheimageDlg::OnPaint()
  2. {
  3. CPaintDC dc(this);
  4. HBITMAP bit;
  5. BITMAP bitmap;
  6. bit = (HBITMAP)
  7.  LoadImage(NULL,"image.bmp",IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);
  8. HDC bit_dc = CreateCompatibleDC(dc);
  9. SelectObject(bit_dc,bit);
  10. GetObject(bit, sizeof(BITMAP),&bitmap);
  11. int LS = bitmap.bmWidth;
  12. int HS = bitmap.bmHeight;
  13. StretchBlt(dc,70,60,300,240,bit_dc,0,0,LS,HS,SRCCOPY);
  14. }


 
Le problème, c'est qu'il n'y a aucun commentaires, ne me simplifiant pas trop la tâche dans la compréhension de celui-ci...
Pourriez-vous m'éclairé sur ce source ?

Reply

Marsh Posté le 04-03-2004 à 13:16:46   

Reply

Marsh Posté le 04-03-2004 à 13:27:57    

Code :
  1. void CAfficheimageDlg::onPaint()   //evenement OnPaint
  2.   {
  3.      CPaintDC dc(this); // recup le DC de la fenetre
  4.      HBITMAP bit;
  5.      BITMAP bitmap;
  6.      bit = (HBITMAP)
  7.       LoadImage(NULL,"image.bmp",IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);  //charge l'image (a chaque OnPaint, allons y, c'est gratuit)
  8.      HDC bit_dc = CreateCompatibleDC(dc);  //prepare le brol du gdi
  9.      SelectObject(bit_dc,bit);
  10.      GetObject(bit, sizeof(BITMAP),&bitmap);
  11.      int LS = bitmap.bmWidth;
  12.      int HS = bitmap.bmHeight;
  13.      StretchBlt(dc,70,60,300,240,bit_dc,0,0,LS,HS,SRCCOPY); //copyle hbitmap dans le DC de la fenetre
  14.   }


 
Appreciation generale : nul

Reply

Marsh Posté le 04-03-2004 à 13:29:09    

lecoyote a écrit :

j'ai récupéré ce source :

Code :
  1. void CAfficheimageDlg::OnPaint()
  2. {
  3. CPaintDC dc(this);
  4. HBITMAP bit;
  5. BITMAP bitmap;
  6. // on charge une image dans le HBITMAP bit
  7. bit = (HBITMAP)
  8.  LoadImage(NULL,"image.bmp",IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);
  9. // on créé un contexte de périphérique, pour dessiner
  10. HDC bit_dc = CreateCompatibleDC(dc);
  11. // on rattache ce contexte à la bitmap de l'image
  12. SelectObject(bit_dc,bit);
  13. // on récupère les informations de l'image dans la structure bitmap  
  14. GetObject(bit, sizeof(BITMAP),&bitmap);
  15. // on récupère la largeur et la hauteur de l'image
  16. int LS = bitmap.bmWidth;
  17. int HS = bitmap.bmHeight;
  18. // on copie dans le contexte de périphérique créé une partie de l'image source(de dimension 300x240, à la position (60,70)
  19. StretchBlt(dc,70,60,300,240,bit_dc,0,0,LS,HS,SRCCOPY);
  20. }




Ceci est une fonction réagissant à l'évènement WM_PAINT (quand la fenêtre doit être redessinée), très lent car chargeant l'image à chaque fois, et utilisant les MFC, donc certainement codée sous Visual C++, et avec les pieds
 
edit: grilled


Message édité par Harkonnen le 04-03-2004 à 13:30:26
Reply

Marsh Posté le 04-03-2004 à 13:33:43    

d'accaord, merci pour vos commentaires qui m'éclairent bien sur la nature de ce source ;)
 
++

Reply

Sujets relatifs:

Leave a Replay

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