Ресурсы, где их разместить и как ссылаться на них в C # - PullRequest
8 голосов
/ 06 ноября 2010

Я некоторое время работал с C # и другими языками программирования, и мне стыдно сказать, что я не знаком со стандартом о том, где размещать такие ресурсы, как значки программ, и как ссылаться на них в моем коде.

В частности, для приложения C # Windows Forms, где было бы целесообразно разместить мои ресурсы значков, и каков путь для ссылки на них, как только я получу их в нужном месте?

Спасибо большоемного за любую помощь.

Ответы [ 4 ]

9 голосов
/ 06 ноября 2010

Вы можете добавить файл Resources.resx в свой проект и добавить в него такие ресурсы, как изображения, строки, файлы. Затем вы можете ссылаться на эти ресурсы через автоматически сгенерированный класс Resources. По умолчанию Visual Studio создает файл Resources.resx в каталоге Properties . Все ресурсы, добавленные вами в файл ресурсов, будут добавлены в каталог Resources по умолчанию.

например.

this.BackgroundImage = Properties.Resources.MyImage;
6 голосов
/ 10 апреля 2015

В завершение я хотел бы изложить некоторые из перечисленных ответов.

Вставить в Resources.resx

Resources.resx должен был быть создан при создании проекта WinForms.Вы можете просмотреть его под Properties в Solution Explorer.

enter image description here

Дважды щелкните Resources.resx, чтобы открыть конструктор.Вы можете скопировать из Windows Explorer и вставить в конструктор ресурсов VS.Этот инструмент достаточно умен, чтобы выяснить, к какому типу ресурсов он относится, и на снимке экрана ниже видно, что похожие типы ресурсов сгруппированы вместе в раскрывающемся списке строки меню.

enter image description here

С этого момента вы можете следовать принятому ответу и вручную назначить ресурс для свойства элемента управления ...

this.BackgroundImage = Properties.Resources.MyImage;


Вставить в форму через конструктор

Используя дизайнер, вы можете встроить ресурс в .resx формы.Выберите элемент управления в конструкторе и откройте окно Properties (F4 является сочетанием клавиш по умолчанию).Найдите подходящее свойство, например Icon для формы.Нажмите кнопку с эллипсами, чтобы открыть диалоговое окно Open File.Перейдите к ресурсу (если вы внедрили его в Resources.resx, он фактически будет находиться в папке Resources - которая была бы создана при добавлении вашего первого ресурса в Resources.resx - и вы должны использовать первый метод выше)и выберите правильный ресурс.

На изображении ниже вы видите файл "scrape.ico", который устанавливается как Icon формы *1040*.

enter image description here

В этом примере будет сгенерирована строка в конструкторе формы 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>
1 голос
/ 23 мая 2014

Вы всегда можете сделать это следующим образом.

Перейти к проекту -> Свойства проекта (всегда имя проекта + свойства) -> Ресурсы

В верхней строке меню вы увидитенайдите поле со списком, в котором вы будете выбирать, какой тип элемента вы хотите использовать в качестве ресурса.

Пример. Если вам нужно изменить значок для формы (тот, который отображается в верхней левой части формы), вам нужно будет загрузить «.ico» файл.Если вам нужно вставить изображение кнопки, вы должны загрузить файл «.png».Вы можете посмотреть этот учебник Resx-файлов видео на YouTube, где все прекрасно объяснено

Как только вы это сделаете, выберите элемент управления, в который вы хотите вставить изображение, и перейдите в Свойства -> Изображение ивыберите изображение, которое вы только что добавили, из файла проекта Project.

0 голосов
/ 28 августа 2014

Ниже приведен код для извлечения изображения из папки ресурсов. Обычно мы храним изображения в папке ресурсов. но иногда у нас есть имя изображения только с нами. в этом случае вы можете получить доступ к изображениям из папки ресурсов, используя только имя изображения.

Ниже код будет демонстрировать об этом.

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 и т. Д.)

надеюсь, кому-нибудь это будет полезно.

Спасибо.

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