为图片框随机输出图像

本文关键字:输出 图像 随机 | 更新日期: 2023-09-27 18:13:19

我在Winform上工作,我有这个图片框。我有52个不同的图像,只有一个图像会在这个特定的图片框中显示。我真的不确定我应该怎么做,而不是以52个if语句结束。有没有人能帮我这个,因为我在编程方面还是个新手:)

我在用c#编程

谢谢!: D

为图片框随机输出图像

小例子:

// Controls:
// pictureBox1
// Dock: Fill
// SizeMode: StretchImage
// timer1
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
using System.Linq;
namespace RandomImg
{
    public partial class Form1 : Form
    {
        // List of files to show 
        private List<string> Files;
        public Form1()
        {
            InitializeComponent();
        }
        // StartUp 
        private void Form1_Load(object sender, EventArgs args)
        {
            // basic settings.
            var ext = new List<string> {".jpg", ".gif", ".png"};
            // we use same directory where program is.
            string targetDirectory = Directory.GetCurrentDirectory();
            // Here we create our list of files
            // New list
            // Use GetFiles to getfilenames
            // Filter unwanted stuff away (like our program)
            Files = new List<string>
                (Directory.GetFiles(targetDirectory, "*.*", SearchOption.TopDirectoryOnly)
                .Where(s => ext.Any(e => s.EndsWith(e))));
            // Create timer to call timer1_Tick every 3 seconds.
            timer1 = new System.Windows.Forms.Timer();
            timer1.Tick += new EventHandler(timer1_Tick);
            timer1.Interval = 3000; // 3 seconds
            timer1.Start();
            // Show first picture so we dont need wait 3 secs.
            ChangePicture();
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            // Time to get new one.
            ChangePicture();
        }
        private void ChangePicture()
        {
            // Do we have pictures in list?
            if (Files.Count > 0)
            {
                // OK lets grab first one
                string File = Files.First();
                // Load it
                pictureBox1.Load(File);
                // Remove file from list
                Files.RemoveAt(0);
            }
            else
            {
                // Out of pictures, stopping timer
                // and wait god todo someting.
                timer1.Stop();
            }
        }
    }
}

第一步是创建某种类型的列表来存储所有图像。您可以选择一个图像列表,也可以选择它们的路径列表。

如果您正在使用Image路由,您可以使用List<Image> images = new List<Image>();创建一个图像列表,并为每个image使用images.Add(image);将每个图像添加到其中。

如果您正在使用路径路由,您可以使用List<String> paths = new List<String>();创建路径列表,并为每个path使用paths.Add(path);将每个映像添加到其中。

然后,当您将图片框设置为随机图像时,您可以生成一个随机数并从列表中选择一个。

图片:

Random random = new Random();
pictureBox1.Image = images[random.Next(0, images.Count - 1)];
对路径:

Random random = new Random();
pictureBox1.ImageLocation = paths[random.Next(0, images.Count - 1)];

正如Tuukka所说,使用路径是一个更好的主意(内存使用方面),除非您已经动态创建了映像,或者由于其他原因已经拥有了映像。