Bitmap + ca deconne + help

Signaler
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
-
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
-
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

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
Pour extraire une image d'une ressource, tu peux utiliser la classe ResourceManager

Mx
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
et tu fais comment par exemple pour avoir a partir de l'id un bitmap ?
id = IDB_BITMAP1 par exemple[ ]
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
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
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
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
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
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
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
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
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
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
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
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
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
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
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
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
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
Et elle se trouve bien dans la ressource "Form1.resx" ?

Mx
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
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
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
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
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
merci de ta réponse, j'ai été en train de me pencher sur une autre méthode je tentais de faire avec resXgen.
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
en faite y'a resXgen et resgen