[C++][GDI+] Impossible de charger une image != .bmp depuis 1 ressource

Impossible de charger une image != .bmp depuis 1 ressource [C++][GDI+] - C++ - Programmation

Marsh Posté le 30-07-2004 à 10:07:36    

:hello:
 
*edit*
New problème avec cette classe: http://www.codeproject.com/vcpp/gd [...] bitmap.asp
Voir ce post plus bas : http://forum.hardware.fr/hardwaref [...] tm#t843590
Mercÿte. :jap:
 
 
--------------------
Acien premier post :
--------------------
 
J'utilise le GDI+ pour afficher mes images... Hors la documentation sur le sdk est un peu faible sur certains points et j'ai un petit problème... :/ Je n'arrive pas à charger une image dans un autre format qu'une bmp depuis une ressource ! :(
 
Voici ce que j'arrive à faire, et ensuite ce que je voudrais réussir à faire :

  • Charger une image depuis un fichier bmp ou tout autre format ca marche sans problème comme ca :
Code :
  1. _pBmpBackground = new Bitmap(L"bckgrnd.jpg" );


 

  • Charger une image bmp depuis une ressource, ca marche aussi quand je le fait de cette facon : (Mais en revanche ca ne marche pas pour un autre format de fichier ! :/ Si la ressource est une jpg/gif/png ou autre ca ne marche pas :/)
Code :
  1. _pBmpBackground = new Bitmap(_hInstance, (const WCHAR *)(MAKEINTRESOURCE(IDB_BCKGRND)));


 

  • Charger une image bmp ou autre format d'image depuis la methode "Fromresource" qui est normalement faite pour charger une image depuis une ressource ne marche pas quand j'essaye de cette manière :
Code :
  1. _pBmpBackground->FromResource(_hInstance, (const WCHAR *)(MAKEINTRESOURCE(IDB_BCKGRND)));


Et dans msdn je ne trouve aucune utilisation dans un exemple de la methode Fromresource, et on ne peut pas dire que la doc detaille enormement ce point... :/
 
Je précise que toutes ces instructions sont bien evidement précédées par :

Code :
  1. Bitmap* _pBmpBackground;


 
Si quelqu'un a une idée de comment je pourrais faire marcher cette satanée méthode ou du comment je pourrais faire pour charger autre chose qu'une bmp depuis une ressource ca m'aiderait bien... :)
 
Mercÿte :jap:


Message édité par Jesus Army le 06-09-2004 à 17:50:53
Reply

Marsh Posté le 30-07-2004 à 10:07:36   

Reply

Marsh Posté le 30-07-2004 à 10:47:53    

Il n'y a pas grand chose à lire mais certaines fois je devrais apprendre à lire quand meme...
http://msdn.microsoft.com/library/ [...] source.asp

Citation :

Return Value
 
    This method returns a pointer to the new Bitmap object.


Beh en récuperant le pointeur retourné quand je mets une bitmap en ressource ca marche en fait... :ange: Je vais essayer avec une jpg maintenant... :ange:

Reply

Marsh Posté le 30-07-2004 à 11:04:48    

Bon beh pas mieux avec autre chose qu'une bmp... :'(

Reply

Marsh Posté le 02-08-2004 à 14:58:04    

[:yoyoz] :(

Reply

Marsh Posté le 02-08-2004 à 15:18:15    

Je ne suis vraiment pas un expert de ce sujet, mais les recherches que j'avais fait à l'époque montrait qu'il est impossible de faire ce que tu veux :D

Reply

Marsh Posté le 02-08-2004 à 16:04:49    

Je pense (j'espère :ange: :ange:) qu'il y a bien une solution quand meme... :(
 
Et à quoi servirait la methode FromResource alors ? :??: (puisque de toute facon on en a pas besoin pour ouvrir une bmp depuis une resource... [:spamafote])
 
Je garde espoir :) :D

Reply

Marsh Posté le 03-08-2004 à 16:37:55    

Reply

Marsh Posté le 04-08-2004 à 10:10:52    

:jap: je regarde ca mais en survolant rapidement je pige pas tout ce que fais le mec... :ange:

Reply

Marsh Posté le 04-08-2004 à 15:05:44    

C'est pas grave ca marche ;)
Recupere sa classe et voila.

Reply

Marsh Posté le 04-08-2004 à 15:32:42    

C'est qu'en fait je voudrais le faire avec des gif, donc faut voir si ca classe est spécifique aux jpg et png, ou si elle marche aussi avec d'autres formats... :ange: Et si ca amrche pas faudra essayer de tout comprendre pour l'adapter aux gif... :/


Message édité par Jesus Army le 04-08-2004 à 15:33:11
Reply

Marsh Posté le 04-08-2004 à 15:32:42   

Reply

Marsh Posté le 06-09-2004 à 17:46:05    

Bon beh finalement (vivi je sais je remonte le topic mais c'est parceque j'avais repoussé cette partie dans le dev... :ange:) je n'y arrive pas avec cette classe... :/ Et pourtant je fais exactement comme il fait dans son prog de demo, et en plus avec ses images, et ca ne marche pas... :(
 
Je m'explique. Lui fait ca pour charger et afficher son image :

Code :
  1. CGdiPlusBitmapResource* pBitmap = new CGdiPlusBitmapResource;
  2. if (pBitmap->Load(_T("IDB_BAY" ), _T("PNG" )))
  3. {
  4. CClientDC dc(this);
  5. Gdiplus::Graphics graphics(dc);
  6. graphics.DrawImage(*pBitmap, 0, 0);
  7. delete pBitmap;
  8. }
  9. else
  10. {
  11. AfxMessageBox("Failure loading image" );
  12. }


Et moi avec ca, la fonction load n'y arrive pas :

Code :
  1. CGdiPlusBitmapResource* pBmpResTest = new CGdiPlusBitmapResource;
  2. if(pBmpResTest->Load(_T("IDB_BAY" ), _T("PNG" )))
  3. {
  4. Gdiplus::Graphics graphics(_hOffscreenDC);
  5. graphics.DrawImage(*pBmpResTest, 0, 0);
  6. }
  7. delete pBmpResTest;


Donc je dois merder quelque chose dans la mise en ressource je supute... Et comme je ne suis pas trop habitué à mettre autre chose que ce qui est proposé par defaut (bmp, icons...) je me dis que je le fais peut être mal... [:spamafote]
 
Pour rajouter cette image, j'ai été dans l'editeur de ressources de VC++.NET puis j'ai fait :

  • Add ressource
  • Import
  • Là je choisi ma PNG
  • En ressource type je met : "PNG" (sans les guillemets bien sur [:tinostar]
  • Je change le nom à IDB_BAY


Et pis vala c'est tout... [:spamafote]
Ca donne exactement le meme résultat que dans l'autre prog de demo de la classe qui marche, mais forcement il doit y avoir une différence quelque part puisque chez moi ca ne marche pas... :'(
 
Donc si vous voyez une erreure bête dans mon raisonnement ou vous avez une idée de comment charger une JPEG/GIF/PNG depuis une ressource avec le GDI+ je suis preneur. :)
 
Mercÿte. :jap:


Message édité par Jesus Army le 06-09-2004 à 17:46:49
Reply

Marsh Posté le 07-09-2004 à 10:37:18    

En fait je viens de regarder ce qu'il se passait dans la methode load(), et c'est la ressource qui n'est pas trouvée... :(
 

Code :
  1. HRSRC hResource = ::FindResource(hInst, pName, pType);


hResource reste non initialisée après ca... :/
 
Une idée ? :'(

Reply

Marsh Posté le 07-09-2004 à 18:53:24    

Bon beh pour ceux que ca interesse, suffit de bien rajouter la ressource (à ce propos l'editeur de VC++ est naze, je m'occupe de ca à la mimine avec ResourceHacker maintenant :)) et d'enlever les quotes autour de la constante de l'ID de la ressource. :)

Reply

Marsh Posté le 09-09-2004 à 14:13:30    

Ah oui pas vu ton Load(_T("IDB_BAY" ).
Ca pouvait pas marcher. Utilise MAKEINTRESOURCE.
=> Load( MAKEINTRESOURCE(IDB_BAY), ...)
Que reproches-tu à l'éditeur de VC++ ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 09-09-2004 à 14:16:40    

En fait ya justement pas besoin de la macro MAKEINTRESOURCE car c'est la classe qui s'en occupe. :) Mais effectivement maintenant ca marche donc c'est bon. :)
 
Ce que je reproche à l'editeur de resource de VC++ c'est que lorsque je veux ajouter une jpeg en ressource et que je l'import en ressource custom il se sent obligé de me la convertir en bitmap... :'( Enfin me suis fait une dll que je manage avec ressource hacker, c'est tout aussi bien voir mieux finalement car sinon l'executable aurait été un peu gros avec toutes les images... :)

Reply

Marsh Posté le 09-09-2004 à 17:31:35    

Il me semble que seul le type Bitmap est supporté dans les ressources, et que LoadImage & co ne supportent que ça. As-tu ajouté ton jpg en tant que bitmap, ou l'as tu importé comme type de resource perso ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 09-09-2004 à 17:44:32    

Hello,
 
moi je load des PNG via cette classe. Par contre quand tu les ajoutes dans tes ressources fais gaffe de bien mettre ca en type perso. Au hasard "PNG" pour tes PNG, "JPG" pour tes JPG... Normalement y'a pas absolument pas de conversion en bitmap et VC++ considere ca comme un fichier binaire. Fais bien attention de lui dire import custom resource un truc comme ca.
 
mynab
 

Reply

Marsh Posté le 09-09-2004 à 18:07:26    

Pour les PNG aucun problème, j'importe ca aussi en custom que je nomme aussi completement au hasard "PNG". (Marrant ca qu'on ait les meme idées, mais d'où cela peut-il bien venir ?? :D ;) :D) Par contre pour les JPEG, j'ai beau bien specifier que je ne veux pas importer une bitmap mais une ressource binaire quelconque, il se sent obligé de me l'inclure en la reconvertissant en bmp toute moche ! :/
 
Mais bon tant pite, resourcehacker me permet de contourner ce problème :)

Reply

Sujets relatifs:

Leave a Replay

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