C# 如何在C中使用计时器停止图像的乱序#
我正在创建一个简单的老虎机。一个按钮用于启动,一个Picturebox的每个磁贴上有三个停止按钮。我的问题是每次单击每个停止按钮时,Picturebox都不会停止 我需要帮助,如果我在相应的Picturebox上单击停止按钮,它将停止,这两个按钮将继续洗牌图片。然后,如果我单击另一个停止按钮,另一个将停止,依此类推 以下是我目前拥有的:C# 如何在C中使用计时器停止图像的乱序#,c#,winforms,timer,image,C#,Winforms,Timer,Image,我正在创建一个简单的老虎机。一个按钮用于启动,一个Picturebox的每个磁贴上有三个停止按钮。我的问题是每次单击每个停止按钮时,Picturebox都不会停止 我需要帮助,如果我在相应的Picturebox上单击停止按钮,它将停止,这两个按钮将继续洗牌图片。然后,如果我单击另一个停止按钮,另一个将停止,依此类推 以下是我目前拥有的: namespace SlotMachine { class SlotMac { private Form f;
namespace SlotMachine
{
class SlotMac
{
private Form f;
Button btn1 = new Button(); // First stop
Button btn2 = new Button(); // Second stop
Button btn3 = new Button(); // Third stop
Button btn4 = new Button(); // Start
Timer Clock; // Tick
Timer Clock1; // Tick
Timer Clock2; // Tick
Int32 tick = 0;
public SlotMac()
{
f = new Form();
f.Text = "Slot Machine";
//f.Size = new Size(800, 700);
f.FormBorderStyle = FormBorderStyle.FixedSingle;
}
PictureBox[] pics = new PictureBox[7];
PictureBox pb = new PictureBox();
public void Launch()
{
int i = 0;
Clock = new Timer();
Clock.Interval = 1000;
Clock.Tick += new EventHandler(Clock_Tick);
Clock1 = new Timer();
Clock1.Interval = 1000;
Clock1.Tick += new EventHandler(Clock1_Tick);
Clock2 = new Timer();
Clock2.Interval = 1000;
Clock2.Tick += new EventHandler(Clock2_Tick);
int x = 50;
for (i = 0; i < pics.Length; i++)
{
pics[i] = new PictureBox();
pics[i].Image = Image.FromFile(i+".jpg");
pics[i].SetBounds(x, 100, 100, 100);
x += 150;
f.Controls.Add(pics[i]);
}
f.SetBounds(10, 20, 500, 500);
// STOP
btn1.Location = new Point(50, 250);
btn1.Height = 40;
btn1.Width = 100;
f.Controls.Add(btn1);
btn1.Text = "STOP";
this.btn1.Click += new EventHandler(this.MyButtonClick);
// STOP
btn2.Location = new Point(200, 250);
btn2.Height = 40;
btn2.Width = 100;
btn2.Text = "STOP";
f.Controls.Add(btn2);
this.btn2.Click += new EventHandler(this.MyButtonClick);
// STOP
btn3.Location = new Point(350, 250);
btn3.Height = 40;
btn3.Width = 100;
btn3.Text = "STOP";
f.Controls.Add(btn3);
this.btn3.Click += new EventHandler(this.MyButtonClick);
// START
btn4.Location = new Point(200, 370);
btn4.Height = 40;
btn4.Width = 100;
btn4.Text = "START";
f.Controls.Add(btn4);
this.btn4.Click += new EventHandler(btn4_Click);
f.ShowDialog();
}
public void Stop_Click(object sender, EventArgs e)
{
}
public void Clock_Tick(object sender, EventArgs e)
{
tick++;
Random r = new Random();
pics[0].Image = Image.FromFile(r.Next(0, 6) + ".jpg");
pics[1].Image = Image.FromFile(r.Next(0, 6) + ".jpg");
pics[2].Image = Image.FromFile(r.Next(0, 6) + ".jpg");
pics[3].Image = Image.FromFile(r.Next(0, 6) + ".jpg");
pics[4].Image = Image.FromFile(r.Next(0, 6) + ".jpg");
pics[5].Image = Image.FromFile(r.Next(0, 6) + ".jpg");
pics[6].Image = Image.FromFile(r.Next(0, 6) + ".jpg");
}
public void Clock1_Tick(object sender, EventArgs e)
{
tick++;
Random r = new Random();
pics[0].Image = Image.FromFile(r.Next(0, 6) + ".jpg");
pics[1].Image = Image.FromFile(r.Next(0, 6) + ".jpg");
pics[2].Image = Image.FromFile(r.Next(0, 6) + ".jpg");
pics[3].Image = Image.FromFile(r.Next(0, 6) + ".jpg");
pics[4].Image = Image.FromFile(r.Next(0, 6) + ".jpg");
pics[5].Image = Image.FromFile(r.Next(0, 6) + ".jpg");
pics[6].Image = Image.FromFile(r.Next(0, 6) + ".jpg");
}
public void Clock2_Tick(object sender, EventArgs e)
{
tick++;
Random r = new Random();
pics[0].Image = Image.FromFile(r.Next(0, 6) + ".jpg");
pics[1].Image = Image.FromFile(r.Next(0, 6) + ".jpg");
pics[2].Image = Image.FromFile(r.Next(0, 6) + ".jpg");
pics[3].Image = Image.FromFile(r.Next(0, 6) + ".jpg");
pics[4].Image = Image.FromFile(r.Next(0, 6) + ".jpg");
pics[5].Image = Image.FromFile(r.Next(0, 6) + ".jpg");
pics[6].Image = Image.FromFile(r.Next(0, 6) + ".jpg");
}
public void MyButtonClick(object sender, EventArgs e)
{
// I am having troubles in this part
if (sender == btn1)
{
Clock.Stop();
}
if (sender == btn2)
{
Clock1.Stop();
}
if (sender == btn3)
{
Clock2.Stop();
}
}
public void btn4_Click(object sender, EventArgs e)
{
Clock.Start();
Clock1.Start();
Clock2.Start();
}
}
}
名称空间SlotMachine
{
类SlotMac
{
私人表格f;
按钮btn1=新按钮();//第一站
按钮btn2=新按钮();//第二次停止
按钮btn3=新按钮();//第三站
按钮btn4=新建按钮();//开始
计时器时钟;//滴答声
计时器时钟1;//滴答声
计时器时钟2;//滴答声
Int32 tick=0;
公共SlotMac()
{
f=新形式();
f、 Text=“老虎机”;
//f、 尺寸=新尺寸(800700);
f、 FormBorderStyle=FormBorderStyle.FixedSingle;
}
PictureBox[]图片=新的PictureBox[7];
PictureBox pb=新PictureBox();
公开发售()
{
int i=0;
时钟=新定时器();
时钟间隔=1000;
Clock.Tick+=新事件处理程序(Clock\u Tick);
时钟1=新定时器();
时钟1.间隔=1000;
Clock1.Tick+=新事件处理程序(Clock1_Tick);
时钟2=新定时器();
时钟2.间隔=1000;
Clock2.Tick+=新事件处理程序(Clock2_Tick);
int x=50;
对于(i=0;i
每台自动售票机设置图片中的所有七幅图像。如果其中一个仍在更新所有图片,那么阻止其中一个也无济于事。我认为您需要为每个时钟创建一个单独的PictureBox阵列。否则,显示内容的PictureBox将持续反映其他两个计时器所做的更改
基本上,如果它们都基于相同的阵列,那么当其他时钟改变时