Windows формирует ImageList — добавлять изображения с относительным путем — без копирования файла

Я пытаюсь добавить изображения в свои узлы дерева (ImageList.Add()), но просто не могу найти хороший способ сделать это.

Я прочитал из справки MSDN, что должен использовать System.Drawing.Image.FromFile(path). Но не может просто получить файл где-нибудь. Я создаю DLL и хочу, чтобы это был один файл, а растровые изображения не копировались вместе с ним.

Итак, я прочитал, что должен добавить файлы изображений в проект и пометить их с помощью действия сборки как «Ресурс». Хорошо, но где их взять??? Я видел людей, использующих его в файлах XAML, но у меня его нет.

Видел людей, использующих Resources.SomeName, но не могу найти этот класс Resources.

Так.... Как мне это сделать?? У меня есть файлы, помеченные как ресурсы, просто нужно добавить их в ImageList.

Кстати, я хотел бы использовать путь относительно Code File, который добавляет изображения в ImageList. Но если нет возможности, то только относительно корня сборки.


person Daniel Möller    schedule 16.04.2013    source источник


Ответы (1)


Если вы хотите использовать пути к файлам, для элементов, которые находятся в вашем проекте, вы должны установить для свойства «Копировать в выходной каталог» значение «Копировать всегда» или «Копировать, если новее», иначе его не будет в папке bin, и тогда вы будете пытаться передать путь к несуществующему файлу. Действие сборки не так важно в этом сценарии.

Если вы хотите использовать скомпилированные ресурсы и ссылаться на них через объект Resources, см. остальную часть моего ответа. Я предполагаю, что вы используете Visual Studio 2005 или более позднюю версию.

Чтобы добавить изображение в качестве скомпилированного ресурса в чистый проект Windows Forms, чтобы вы могли получить к нему доступ через Resources.SomeName, выполните следующие действия:

  1. В обозревателе решений в проекте Windows Forms (мой называется WinFormsApplication1) разверните папку «Свойства». По умолчанию эта папка должна содержать: AssemblyInfo.cs, Resources.resx, Settings.settings.
  2. Дважды щелкните файл Resources.resx. Это откроет для него редактор. Вероятно, вы увидите таблицу строк со столбцами «Имя», «Значение», «Комментарий».
  3. Щелкните стрелку раскрывающегося списка на кнопке «Добавить ресурс» и выберите «Существующий файл», что позволит вам перейти к изображению, которое вы хотите добавить.
  4. Теперь вы должны увидеть, как изображение появляется в своего рода галерее. Мой имеет имя TestImage

Теперь, когда вы редактируете код (у меня это Fom1.cs), я могу получить доступ к изображению как System.Drawing.Bitmap как Properties.Resources.TestImage.

На мой взгляд, это лучший способ сделать изображения, которые вы хотите скомпилировать в приложение. Если вам нужны изображения, добавленные пользователем, вам нужно использовать OpenFileDialog или что-то в этом роде, чтобы получить путь к файлу. Тогда Image.FormFile() будет тем, что вы хотите.

person guysherman    schedule 16.04.2013
comment
Да, я хотел бы использовать опцию ресурса, но как мне получить изображение оттуда? Просто ввести код Resources.ImageName или Properties.Resources.ImageNamein не получится. Что мне не хватает? - person Daniel Möller; 17.04.2013
comment
Хорошо, нашел. Класс, в котором у меня был код, находился в другом пространстве имен, поэтому я не смог найти класс Resources. - person Daniel Möller; 17.04.2013