[VC++6] Sauvegarde d'une view en fichier bmp

Sauvegarde d'une view en fichier bmp [VC++6] - C++ - Programmation

Marsh Posté le 21-08-2004 à 16:06:08    

Salut,
 
Ma question est en fait assez simple.
J'ai une petite appli basée sur des symboles graphiques, que je dévelope en sous Visual C++ 6, et je voudrais savoir comment faire pour sauvegarder ce qui se trouve dans ma view, sous forme de fichier.
 
Je pense que le plus simple sera un fichier au format bmp.
 
Existe t il une maniere facile de le faire?
 
Merci.

Reply

Marsh Posté le 21-08-2004 à 16:06:08   

Reply

Marsh Posté le 21-08-2004 à 16:15:52    

<printscreen> :D


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 21-08-2004 à 17:39:32    

Mais nan,  
 
Je voudrais pouvoir le faire de maniere logicielle, cad inclure un bouton dans ma toolbar permettant de saugarder ma vue en format bmp (et avec le nom de fichier voulu)

Reply

Marsh Posté le 02-09-2004 à 11:28:44    

Yoyo@ a écrit :

Mais nan,  
 
Je voudrais pouvoir le faire de maniere logicielle, cad inclure un bouton dans ma toolbar permettant de saugarder ma vue en format bmp (et avec le nom de fichier voulu)


 
Bah justement y a moyen de sauvegarder en tant que BMP ce qui est affiché à l'écran...
 
Voilà un exemple que j'ai fait, ça doit être très loin d'être propre point de vue code, mais ça fonctionne bien:
 

Code :
  1. char fichierbmp[64],fichiergif[64];
  2. char command[128];
  3. CClientDC dc(this);
  4. LPRECT lprect;
  5. RECT rect;
  6. CPoint pt;
  7. pt=dc.GetCurrentPosition();
  8. GetWindowRect(&rect);
  9. lprect=&rect;
  10. HDC hdcScreen=CreateDC("DISPLAY",NULL,NULL,NULL);
  11. HDC hdcCompatible=CreateCompatibleDC(hdcScreen);
  12. BITMAP bmp;
  13. bmp.bmPlanes=1;
  14. bmp.bmBitsPixel=8;
  15. // suppression des artéfacts éventuels
  16. // (on connaît windows!!)
  17. lprect->left+=5;
  18. if(version == 0)  //Win 9x/Me
  19. {
  20.  //MessageBox("9x/Me","" );
  21.  lprect->top += 40; //On ne capture pas l'entête des courbes (angle + valeurs des capteurs)
  22. }
  23. else if(version == 1) //Win 2000/Xp
  24. {
  25.  //MessageBox("2k/XP","" );
  26.  lprect->top += 48; //On ne capture pas l'entête des courbes (angle + valeurs des capteurs)
  27. }
  28. else if(version == -1) //Erreur dans la détermination de la version
  29. {
  30.  //MessageBox("???","" );
  31.  lprect->top += 40;
  32. }
  33. lprect->right-=5;
  34. lprect->bottom-=5;
  35. bmp.bmWidth=(lprect->right)-(lprect->left);
  36. bmp.bmHeight=(lprect->bottom)-(lprect->top);
  37. HBITMAP hbmScreen=CreateCompatibleBitmap(hdcScreen,
  38.  bmp.bmWidth,
  39.  bmp.bmHeight);
  40. if(hbmScreen==0)
  41.  MessageBox("Erreur 1","Erreur",MB_ICONSTOP);
  42. if(!SelectObject(hdcCompatible,hbmScreen))
  43.  MessageBox("Erreur 2","Erreur",MB_ICONSTOP);
  44. if(!BitBlt(hdcCompatible,
  45.  0,0,
  46.  bmp.bmWidth,bmp.bmHeight,hdcScreen,
  47.  lprect->left,lprect->top,
  48.  SRCCOPY))
  49.   MessageBox("Erreur 3","Erreur",MB_ICONSTOP);
  50. PBITMAPINFO info;
  51. info=CreateBitmapInfoStruct(hbmScreen);
  52. if(info!=NULL)
  53. {
  54.  sprintf(fichierbmp,"c%02dt%02d.bmp",axe,courbe_courante);
  55.  sprintf(fichiergif,"c%02dt%02d.gif",axe,courbe_courante);
  56.  CreateBMPFile(fichierbmp,info,hbmScreen,hdcCompatible);
  57.  // si test.gif existe, l'effacer!
  58.  if(fichier_existe(fichiergif))
  59.   DeleteFile(fichiergif);
  60.  // convertit
  61.  sprintf(command,"..\\..\\..\\..\\..\\GiFFY /a %s",fichierbmp);
  62.  WinExec(command,SW_HIDE);
  63.  // la conversion s'est-elle (à priori) bien déroulée?
  64.  if(!fichier_existe(fichiergif))
  65.  {
  66.   MessageBox("Erreur lors de la conversion","Erreur",MB_ICONSTOP);
  67.  }
  68.  else
  69.  {
  70.   DeleteFile(fichierbmp);
  71.   //MessageBox("Courbe validée pour exportation!","Information",MB_ICONINFORMATION);
  72.  }
  73. }
  74. else
  75. {
  76.  MessageBox("La courbe n'a pas pu être exportée!","Erreur",MB_ICONEXCLAMATION);
  77. }
  78. DeleteDC(hdcScreen);


---------------
J'aime pas Apple...
Reply

Sujets relatifs:

Leave a Replay

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