Как добавить ресурсы в отдельных папках?

В пространстве «инфраструктура как код» существует множество опций: CDK, CloudFormation, Terraform, Troposphere, Chalice, Serverless и другие.

Одно мнение см. В Формирование безсерверных облаков с помощью AWS: CloudFormation, SAM, CDK, Amplify .

9
задан Rich Seller 21 July 2009 в 16:12
поделиться

2 ответа

Вам не нужно добавлять изображения в папку "Ресурсы". Вы можете добавить изображения в любую папку, которую хотите, а затем установить действие сборки для изображений на «Встроенный ресурс». Таким образом они будут скомпилированы в сборку как ресурсы. Я не знаю, возникают ли проблемы с производительностью при большом количестве изображений ...

Обновление: подробнее:

  1. Добавьте папки и файлы изображений в качестве элементов проекта в проект ( чтобы вы могли видеть каждую папку и изображения в ней в обозревателе решений)
  2. Установите для свойства Build Action каждого файла изображений значение «Embedded Resource» (вы можете сделать это для нескольких файлов одновременно; просто выберите все файлы изображений в проводнике решений).

Это приведет к компиляции файлов изображений в сборку как ресурсов. Каждому файлу будет присвоено имя ресурса в соответствии с этим шаблоном: <корневое пространство имен для сборки>. <Имя папки>. <Имя файла изображения> . Вы можете загрузить изображение с помощью этого кода:

using(Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("<root namespace for the assembly>.<folder name>.<image file name>"))
{
    pictureBox1.Image = Image.FromStream(stream);
}
9
ответ дан 4 December 2019 в 20:24
поделиться

Создайте новый файл ресурсов (в следующем примере я назвал его Images01 в папке resx) Создайте собственный класс диспетчера ресурсов и инициализируйте его так, чтобы он указывал на только что созданный файл

ResourceManager rm = new ResourceManager("ROOTNAMESPACE.resx.Images01", 
                                     System.Reflection.Assembly.GetExecutingAssembly());

Реализуйте метод в GetImage

    public static Image GetImage(string fileName)
    {
        Stream stream = GetResourceStream(fileName);

        Image image = null;
        if (stream != null)
        {
            image = Image.FromStream(stream);
        }

        return image;
    }

Добавьте изображения в этот файл resx

И затем вы можете использовать его в своем коде следующим образом

this.picProject.Image = Resources.GetImage("ImageName.png");

Надеюсь, это поможет

2
ответ дан 4 December 2019 в 20:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: