Ресурсы, где их разместить и как ссылаться на них в C#
Я некоторое время работал с C# и другими языками программирования, и мне стыдно сказать, что я не знаком со стандартом, где размещать ресурсы, такие как значки программ, и как ссылаться на них в моем коде.
В частности, для приложения C# Windows Forms, где было бы целесообразно разместить мои ресурсы значков и каков путь для ссылки на них, как только я получу их в нужном месте?
Большое спасибо за любую помощь.
4 ответа
Вы можете добавить файл Resources.resx в свой проект и добавить в него такие ресурсы, как изображения, строки, файлы. Затем вы можете ссылаться на эти ресурсы через автоматически сгенерированный Resources
учебный класс. По умолчанию Visual Studio создает файл Resources.resx в каталоге свойств. Любые ресурсы, добавленные вами в файл ресурсов, будут добавлены в каталог ресурсов по умолчанию.
например
this.BackgroundImage = Properties.Resources.MyImage;
Для завершения я хотел бы изложить некоторые из перечисленных ответов.
Вставить в Resources.resx
Resources.resx
должен был быть создан при создании проекта WinForms. Вы можете просмотреть его под Properties
в Solution Explorer
,
Двойной щелчок Resources.resx
открыть конструктор. Вы можете скопировать с Windows Explorer
и вставьте в конструктор ресурсов VS. Этот инструмент достаточно умен, чтобы выяснить, к какому типу ресурсов он относится, и на снимке экрана ниже видно, что похожие типы ресурсов сгруппированы в раскрывающемся списке строки меню.
С этого момента вы можете следовать принятому ответу и вручную назначить ресурс для свойства элемента управления...
this.BackgroundImage = Properties.Resources.MyImage;
Вставить в форму через дизайнера
Используя конструктор, вы можете встроить ресурс в форму .resx
, Выберите элемент управления в дизайнере и откройте Properties
окно (F4
это сочетание клавиш по умолчанию). Найдите подходящее свойство, такое как Icon
для формы. Нажмите кнопку с эллипсами, чтобы открыть Open File
Диалог. Перейдите к ресурсу (если вы встроили его в Resources.resx
это на самом деле будет в Resources
папка, которая была бы создана при добавлении вашего первого ресурса в Resources.resx
- и вы должны использовать первый метод выше), и выберите правильный ресурс.
На изображении ниже вы можете увидеть файл "scrape.ico", установленный как Main
форма-х Icon
,
Этот пример в конечном итоге будет генерировать строку в Main
конструктор формы, как это...
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
где...
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Main));
И в main.resx
...
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
...img data...
</value>
</data>
Вы всегда можете сделать это таким образом.
Зайдите в Проект -> Свойства проекта (всегда название проекта + свойства)-> Ресурсы
В верхней строке меню вы найдете поле со списком, в котором вы будете выбирать, какой тип элемента вы хотите использовать в качестве ресурса.
Пример: если вам нужно изменить значок для формы (тот, который отображается в верхней левой части формы), вам нужно будет загрузить файл ".ico". Если вам нужно вставить изображение кнопки, вы должны загрузить файл ".png". Вы можете посмотреть это учебное видео на YouTube по файлам Resx, где оно отлично объяснено.
Сделав это, вы выбираете элемент управления, в который хотите вставить изображение, и идете в Свойства -> Изображение, а затем выбираете изображение, которое вы только что добавили, из файла Project Project.
Ниже приведен код для извлечения изображения из папки ресурсов. Обычно мы храним изображения в папке ресурсов. но иногда у нас есть имя изображения только с нами. в этом случае вы можете получить доступ к изображениям из папки ресурсов, используя только имя изображения.
Ниже код будет демонстрировать об этом.
private System.Resources.ResourceManager RM = new System.Resources.ResourceManager("YourApplicationNameSpace.Properties.Resources", typeof(Resources).Assembly);
PictureBox1.Image = (Image)RM.GetObject(YourPictureName);
- YourAppliacationNameSpace означает имя вашего приложения.
- YourPictureName означает изображение, к которому вы хотите получить доступ из папки ресурсов. но имя изображения должно быть без расширения, например (PNG, GIF, JPEG и т. д.)
надеюсь, что это будет полезно для кого-то.
Спасибо.