c#-当最初加载到表单中时,如何处理多个位图格式?

c#-当最初加载到表单中时,如何处理多个位图格式?,c#,C#,通过按文件扩展名指定名称和图像格式,最初可以将单个图像从应用程序子文件夹加载到Windows窗体中,以显示为背景图像。 但是,我无法找到一种方法来支持名称相同的不同图像格式,并有效地处理子文件夹中具有相同名称但图像文件扩展名不同的多个图像。 我希望,如果子文件夹中有一个具有此名称的图像,则名为map_default(.)的任何受支持位图图像最初将作为背景图像加载,如果子文件夹中有多个图像,则将随机选取一个图像,如下所示: application1.exe defaultmap(文件夹): -ma

通过按文件扩展名指定名称和图像格式,最初可以将单个图像从应用程序子文件夹加载到Windows窗体中,以显示为背景图像。
但是,我无法找到一种方法来支持名称相同的不同图像格式,并有效地处理子文件夹中具有相同名称但图像文件扩展名不同的多个图像。
我希望,如果子文件夹中有一个具有此名称的图像,则名为map_default(.)的任何受支持位图图像最初将作为背景图像加载,如果子文件夹中有多个图像,则将随机选取一个图像,如下所示:

application1.exe
defaultmap(文件夹):
-map_default.png
-map\u default.gif
-map\u default.bmp
-映射\u默认值。tiff
-map_default.jpeg

我看到了许多修改路径表达式的方法,但不幸的是,似乎无法在一个路径表达式中定义图像的名称并为其指定不同的文件扩展名。
另一方面,我似乎必须为图像指定扩展名。
我需要知道正确的路径表达式和检查数组中是否只有一个图像或多个图像的方法(在本例中,从数组中选择一个项目)。
我怎么可能解决这个问题呢

嗯,我不知道如何随机选取,但我的问题是,当我最初将图像加载到表单中时,我不知道如何在不指定扩展名的情况下读取图像。
有许多使用文件选择器和拖放的工作解决方案,但我不确定在窗体运行时自动加载图像时该怎么办:

BackgroundImage = Image.FromFile(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"defaultmap\map_default.png"));  
我可以将System.IO.Directory.GetFiles路径表达式与任何扩展名一起使用吗

类似这样的

        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                //declare path to images directory
                string path = @"C:\MyPath\images\";
                //fill an array with file names.
                string[] images = Directory.GetFiles(path);

                if (String.IsNullOrEmpty(images[0]))
                {
                   //set background to hex code color
                }
                else if (String.IsNullorEmpty(images[1]))
                {
                    //set background to images[0]
                }
                else
                {
                    //set background to random array value for images
                }

            }
        }

如果您只是拒绝为图像设置专用目录,则可以检查数组中以.png、.jpg、.bmp结尾的每个值,等等。

至少发布几行代码,并展示您已经尝试过的内容。在担心特定图像的确切路径之前,我会先获取该目录的句柄,看看您从那里有哪些选项。看起来不错。对于我问题的第二部分,是否有一种方法可以在此解决方案中包含我的背景图像列表,该列表使用编号值进行随机选择,还是有一种较短的方法直接在else{}中执行随机部分?@taraz获取数组中的值。类似于int result=myarray.GetLength(0);。然后生成一个从0到result的随机数,然后调用images[result]