Bonjour a tous,
Je cale sur l'utilisation des resources en C++/CLI sous VS2010.
Pas mal de doc en VB ou C# mais a chaque fois par utilisation de Stream(s).
Je voudrai betement utiliser une image de presentation dans un layout, Pour cela
_ dans ma solution (.sln) et dans l'IDE
_ je crée un UserControl (C++ Control) que je viens rattacher a un evenement (genre click bouton) pour ouvrir cette fenetre. UserControl mis dans un répertoire Layout qui contient tous les usercontrols de ma solution.
_ dans ce UserControl, je voudrai afficher une image, (genre le logo du projet). Dans le [Design] je crée un PictureEdit (chez DevExpress) ou picturebox plus classique
_ lors du chargement je voudrai lier une image a la picturebox mais sans utiliser un chargement de fichier image sur le disque quelconque.
_ j'ai trouvé 3 solutions dans les divers forums, docs et tutoriaux :
1) celle de Nico
en mettant dans Project/Properties/Linker/Input/Embed Managed resource File le lien au fichier Image : F:\Developpement\Resources\Theme\Logo v1.png
Code : Sélectionner tout - Visualiser dans une fenêtre à part this->pictureEdit1->Image = Image::FromStream(Reflection::Assembly::GetExecutingAssembly()->GetManifestResourceStream("splashScreen.png"));
ca ok ca fonctionne mais il faut aller dans le "Solution" Property Pages et les options incomprehensibles :-)
2) les deux autres qui ne fonctionnent pas :
en ajoutant un images.resx dans ma solution
et en specifiant poru l'image voulue (splashScreen)
Persistence = Linked at compile time
ou encore
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager()); this->pictureEdit1->Image = (cli::safe_cast<System::Drawing::Image^> (resources->GetObject(L"splashScreen")));
Aucune des deux ne charge l'image.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ResXResourceSet^ resources = gcnew ResXResourceSet("ophResources\images.resx"); // nom du repertoire ou sont les resources du projet this->pictureEdit1->Image = (cli::safe_cast<System::Drawing::Image^> (resources->GetObject(L"splashScreen")));
Mes deux questions sont simple sans doute mais je ne comprends pas le systeme des resources dans C++/CLI :
a) quelles sont les differences entre chaque systeme de chargement de resource ?
b) comment utiliser un fichier images.resx ou sont contenues toutes les images (pour les boutons, les affichages, les logos etc..) et charger dans un composant les images voulues directement dans ce fichier images.resx.
Image.resx qui serait lui meme lié a l'executable ou dans une dll.
c) dans le pictureedit, si je mets la propriete Image au nom du fichier, il ne se passe rien (sans doute parceque je perds les liens avec le repertoire Debug).
Je veux bien un coup de main ou une explication du systeme car la je m'y perds. Les deux fichiers jpg joints montrent ma solution
Partager