一尘不染

从资源加载图像

c#

我想像这样加载图像:

void info(string channel)
{
    //Something like that
    channelPic.Image = Properties.Resources.+channel
}

因为我不想做

void info(string channel)
{
    switch(channel)
    {
        case "chan1":
            channelPic.Image = Properties.Resources.chan1;
            break;
        case "chan2":
            channelPic.Image = Properties.Resources.chan2;
            break;
    }
}

这样的事情可能吗?


阅读 244

收藏
2020-05-19

共1个答案

一尘不染

您可以始终使用System.Resources.ResourceManagerwhich返回ResourceManager此类使用的缓存。由于chan1chan2代表两个不同的图像,您可以使用System.Resources.ResourceManager.GetObject(string name),它返回一个与您的输入和项目资源相匹配的对象

object O = Resources.ResourceManager.GetObject("chan1"); //Return an object from the image chan1.png in the project
channelPic.Image = (Image)O; //Set the Image property of channelPic to the returned object as Image

注意 :如果在项目资源中找不到指定的字符串,则Resources.ResourceManager.GetObject(string name)可能会返回null

谢谢,
希望对您有所帮助:)

2020-05-19