Bitmap + ca deconne + help

cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 - 30 mars 2005 à 15:20
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 - 30 mars 2005 à 18:36
Bonjour,

Quelqun serait t'il comment créer un bitmap à partir d'une ressource ?

ca ferait un truc du genre
Bitmap * a = Bitmap::FromResource(0,"IDB_BITMAP1") ;

ou


Bitmap * a = Bitmap::FromResource(0,MAKEINTRESOURCE("IDB_BITMAP1")) ;

enfin je sais pas trop

Par avance, merci.

15 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
30 mars 2005 à 16:00
Pour extraire une image d'une ressource, tu peux utiliser la classe ResourceManager

Mx
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
30 mars 2005 à 16:05
et tu fais comment par exemple pour avoir a partir de l'id un bitmap ?
id = IDB_BITMAP1 par exemple[ ]
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
30 mars 2005 à 16:27
private ResourceManager rm = new ResourceManager("namespace.nomressource", Assembly.GetExecutingAssembly());



Bitmap bmp = new Bitmap((Image)rm.GetObject("IDB_BITMAP1
"));



Ou alors c'est que je n'ai pas bien compris ta question ;)

Mx
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
30 mars 2005 à 16:33
houlala ca a l'air compliqué,


En faite je veux inclure dans mon executable 200 fichier bmp.

et pour les affichers il faut que je les convertissent en bitmap avec l'id je pense IDB_BITMAP1, IDB_BITMAP2, IDB_BITMAP3 etc......

mais en faite c compliqué parceque l'id "IDB_BITMAP1" jy ais pas accès, ce que tu m'as passé ca doit être ca mais je t'avouerais que je comprends pas tout en faite. Aurais tu un bout de code par hazard ? ou quelque chose de plus eplicite ?

par avance, merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
30 mars 2005 à 17:31
Bah je vois pas trop ce qui est compliqué.

Tu crées une instance de ResourceManager, ici nommée rm.

Le constructeur du ResourceManager prend 2 paramètres : Le nom du
fichier ressource, et l'assembly qui contient cette ressource (dans ton
cas, ton exe, ce que recuperes la ligne
"Assembly.GetExecutingAssembly()"



Ensuite, tu dois utiliser ton instance de ResourceManager pour recuperer les elements de ta ressource



Par le biais de cette ligne :


Bitmap bmp = new Bitmap((Image)rm.GetObject("IDB_BITMAP1
"));
Tu crées un une instance de Bitmap, qui référence l'image qui est dans ta ressource


Mx
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
30 mars 2005 à 17:44
en faite je créer mes resources avec l'assistant dans visual studio donc je me retrouve avec l'editeur de ressources pleins d'image bmp. et un fichier resource.h. J'ai essayé ca :


ResourceManager* rm =
new ResourceManager("test1555.exe", Assembly::GetExecutingAssembly());


Bitmap * a =
new Bitmap(
dynamic_cast(rm->GetObject("IDB_BITMAP10"))) ;

mais ca marche pas apparement ce serait le test1555.exe qui deconne, le nom de mon fichier ressources c'est quoi alors ? apparement c'est un fichier..ressource j'ai essayé en mettant app.res mais ca deconne toujours et app tout court deconne aussi..

Je precise que c'est du c++ et que c pareil que le c#, juste remplacer les # par des ->

si tu avais une solution pour eclairé ma lanterne, par avance, merci
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
30 mars 2005 à 17:49
en effet, a la place du "test1555.exe", tu dois mettre le nom de ton fichier resx (ou resource), pas le nom de ton executable.


Mx
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
30 mars 2005 à 17:58
ben j'ai app.rc dans l'editeur de ressource mais apparement c'est pas ca et j'ai Form1.resX j'ai essayé en mettant ca mais tjs le meme message d'erreur :

Une exception non gérée du type 'System.Resources.MissingManifestResourceException' s'est produite dans mscorlib.dll

Informations supplémentaires : Impossible de trouver des ressources appropriées pour la culture spécifiée (ou la culture neutre) de votre assembly. Assurez-vous que "Form1.resX.resources" est correctement incorporé ou lié dans l'assembly "test1555".
baseName: Form1.resX locationInfo: <null> resource file name: Form1.resX.resources assembly: test1555, Version=1.0.1915.30570, Culture=neutral, PublicKeyToken=null

que faire que faire
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
30 mars 2005 à 18:04
Ah oui, j'ai oublié de préciser qu'il faut pas mettre l'extension.

Dont il faut mettre "Form1" dans le paramètre du ResourceManager



Mais il faut etre sur que tes images soient dedans.

Si vraiment tu t'en sors pas, recrées toi une ressource que tu nommes "Images", et fait comme indiqué.


Mx
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
30 mars 2005 à 18:07
en faite j'ai comme ca :


ResourceManager* rm =
new ResourceManager("test1555.Form1", Assembly::GetExecutingAssembly());




Bitmap * a =
new Bitmap(
dynamic_cast(rm->GetObject("IDB_BITMAP12"))) ;

ca marche mais il me dit pour la ligne 2 la référence d'objet n'est pas defini a une instance d'objet, je suppose que ca doit être le IDB_BITMAP12 qui deconne pourtant il existe bien
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
30 mars 2005 à 18:11
Et elle se trouve bien dans la ressource "Form1.resx" ?

Mx
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
30 mars 2005 à 18:17
ben ca je sais pas j'ai créer avec l'assistant mais j'ai un fichier resource.h qui donne


#define IDB_BITMAP1 101


#define IDB_BITMAP2 102


#define IDB_BITMAP3 103


#define IDB_BITMAP4 104


#define IDB_BITMAP5 105


#define IDB_BITMAP6 106


#define IDB_BITMAP7 107


#define IDB_BITMAP8 108


#define IDB_BITMAP9 109


#define IDB_BITMAP10 110


#define IDB_BITMAP11 111


#define IDB_BITMAP12 112
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
30 mars 2005 à 18:31
Bon ok, je viens de regarder Visual c++ .Net, et ca fonctionne pas
pareil qu'en C#. Je ne sais pas comment faire avec les fichier rc.

Pout la méthode que je te donne, il faut que tu crées un Fichier de Ressource d'Assembly (.resx)

Le probleme, c'est que visual studio ne permet pas il me semble, d'inserer des fichiers dans une ressource.


Donc voici une autre méthode :

Dans ton dossier d'installation de Visual Studio, fais une recherche de
"reseditor". C'est un exemple fourni qui est une appli qui permet de
creer et d'editer des ressources.

Compile la si ce n'est deja fait, puis ouvre le. Crée ta ressource,
avec tes fichiers, c'est tout simple a faire. (insere juste une image
pour tester, tu rajouteras toutes les autres apres).



Ensuite, enregistre ta ressource sous le nom de "Images.resx", ajoute
la à ton projet, et fait comme cité précédement. (avec le nom de ta
nouvelle ressource)


Mx
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
30 mars 2005 à 18:35
merci de ta réponse, j'ai été en train de me pencher sur une autre méthode je tentais de faire avec resXgen.
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
30 mars 2005 à 18:36
en faite y'a resXgen et resgen
0
Rejoignez-nous