我正在使用Winform,我有這個圖片框。我有52個不同的圖像,只有1個圖像將在這個特定的圖片框中顯示。我不確定我應該如何做到這一點,而不會結束52個if語句。誰能幫我這個因爲我還是有點新的編程:)圖片框c的隨機輸出圖像#
我在C#編程很
謝謝! :D
我正在使用Winform,我有這個圖片框。我有52個不同的圖像,只有1個圖像將在這個特定的圖片框中顯示。我不確定我應該如何做到這一點,而不會結束52個if語句。誰能幫我這個因爲我還是有點新的編程:)圖片框c的隨機輸出圖像#
我在C#編程很
謝謝! :D
第一步是製作某種列表來存儲所有圖像。您可以選擇圖像列表或其路徑列表。
如果您使用的是圖像路由,您可以創建一個包含List<Image> images = new List<Image>();
的圖像列表,併爲每個圖像添加images.Add(image);
每個圖像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說,使用的路徑是一個更好的主意(內存使用明智的),除非你已經創建了動態圖像,或者出於其他原因已經具有圖像。
製作52張圖片列表列表
非常真實,但他可能已經有了圖像,例如,如果他在運行時創建它們。我編輯了我的帖子以包含您的建議。 – 2013-05-11 18:23:28
小例子:
// 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();
}
}
}
}
你爲什麼不辦一個循環? – 2013-05-11 18:01:33
聽起來像你需要一個數組或列表的文件名或圖像本身。然後,您可以使用隨機生成的數字來獲取您想要設置的圖片,例如imageList [random.Next(0,51)] – 2013-05-11 18:07:20