Ресурсы изображений в WinForms - PullRequest
1 голос
/ 06 июня 2010

Я хочу хранить изображения в файле .dll и использовать их для своего приложения winform.но я не могу загрузить .dll содержимое

   System.IO.Stream stream;
   System.Reflection.Assembly assembly;
   Image bitmap;
   assembly = System.Reflection.Assembly.LoadFrom(Application.ExecutablePath);
   stream = assembly.GetManifestResourceStream("global::template.Properties.Resources.test.png");
   bitmap = Image.FromStream(stream);
   this.background.titleImage = bitmap; // image box

Ответы [ 2 ]

2 голосов
/ 06 июня 2010

Вы используете неправильное имя, "global ::" не отображается в имени ресурса манифеста. Типичное имя будет project .test.png, если вы добавили ресурс в проект и установили для его действия по сборке значение «Встроенный ресурс». Чтобы не угадать имя, используйте Ildasm.exe и найдите .mresource в манифесте.

Однако, ваше имя предполагает, что вы добавили ресурс в Project + Properties, вкладка Resources. Хорошая идея, что автоматически генерирует имя свойства для ресурса. Вы бы использовали project .Properties.Resources.test для ссылки на него. Вы получите изображение обратно, нет необходимости использовать GetManifestResourceStream.

Имя проекта , которое я перечислил выше, является именем пространства имен по умолчанию, которое вы присвоили проекту. Проект + Свойства, вкладка «Приложение», настройка пространства имен по умолчанию.

2 голосов
/ 06 июня 2010

Наиболее вероятная проблема в том, что путь, который вы указываете в GetManifestResourceStream (), является неправильным.

Я считаю следующее полезным для устранения этих проблем:

  1. Открыть сборку со встроенным ресурсом в Reflector.
  2. Откройте папку ресурсов.
  3. Из списка путей к ресурсам \ папок найдите тот, в котором находится ваш ресурс.
  4. Если вы не можете найти свой ресурс, отметили ли вы его как встроенный ресурс?
  5. Ваш путь к ресурсу будет "Папка ресурса" + "." + "имя ресурса".

например. "PrismDemo.Properties.Resources.resources.app.ico"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...