我有一個程序,在窗體內彈跳方塊,我也必須讓它每隔5秒繪製方塊改變顏色,我有一個計時器來更新一個在每個盒子的座標上的列表框以及間隔爲5000的第二個定時器來改變正方形的顏色。現在我想弄清楚究竟如何我改變方塊的顏色與定時器,我有一個方法叫colorchange
一個叫rectcolor
c#如何改變矩形的顏色,每5秒
private Color Rectcolor { get; set; }
}
public Color Colorchange()
{
Rectcolor = Color.FromArgb(randcolor.Next(256), randcolor.Next(256), randcolor.Next(256));
return Rectcolor;
}
財產Form1
我有一個foreach定時器2記號事件經歷箱子
public partial class Form1 : Form
{
Random Randcolor = Box.randcolor;
Random Rand = Box.rand;
List<Box> Boxes = new List<Box>();
public Form1()
{
InitializeComponent();
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
this.SetStyle(ControlStyles.UserPaint, true);
}
private void timer2_Tick(object sender, EventArgs e)
{
foreach (Box tmp in Boxes)
{
tmp.Colorchange();
}
}
當我運行的程序沒有任何反應與移動矩形,如何使colorchange
真正改變矩形的顏色?
全框類別代碼
class Box
{
protected Rectangle myRectangle;
protected int xStep;
protected int yStep;
protected Form pForm;
protected Label myLocation;
protected Color myColor;
public static Random rand = new Random();
public static Random randcolor = new Random();
public Box(int x, int y, int s, Form pF)
{
myColor = new Color();
myColor = Colorchange();
myLocation = new Label();
myLocation.BackColor = Color.Transparent;
myLocation.Left = x;
myLocation.Top = y;
myLocation.ForeColor = Colorchange();
pF.Controls.Add(myLocation);
pForm = pF;
myRectangle = new Rectangle(x, y, s, s);
myRectangle.X = x;
myRectangle.Y = y;
xStep = rand.Next(1, 15);
yStep = rand.Next(1, 15);
}
public int X { get { return myRectangle.X; } }
public int Y { get { return myRectangle.Y; } }
private int Width { get { return myRectangle.Width; } }
private int Height { get { return myRectangle.Height; } }
private Color Rectcolor { get; set; }
public void Move()
{
myRectangle.X += xStep;
myRectangle.Y += yStep;
if (myRectangle.X <= 0)
xStep *= -1;
if (myRectangle.X + myRectangle.Width >= pForm.ClientSize.Width)
xStep *= -1;
if (myRectangle.Y <= 0)
yStep *= -1;
if (myRectangle.Y + myRectangle.Height >= pForm.ClientSize.Height)
yStep *= -1;
//if (myRectangle.X >500)
// xStep *= -1;
}
public Color Colorchange()
{
Rectcolor = Color.FromArgb(randcolor.Next(256), randcolor.Next(256), randcolor.Next(256));
return Rectcolor;
}
public static bool Bounce(Box One, Box Two)
{
if (One.X + One.Width < Two.X)
return false;
if (Two.X + Two.Width < One.X)
return false;
if (One.Y + One.Height < Two.Y)
return false;
if (Two.Y + Two.Height < One.Y)
return false;
return true;
}
//public void collision()
//{
// xStep *= -1;
// yStep *= -1;
//}
public void Draw(Graphics g)
{
g.DrawRectangle(new Pen(Color.Blue), myRectangle);
myLocation.Top = myRectangle.Y -15;
myLocation.Left = myRectangle.X+(myRectangle.Width/4);
myLocation.Text = myRectangle.X.ToString() + ", " + myRectangle.Y.ToString();
}
我開始對buttone點擊計時器,我會給你Form1中
public partial class Form1 : Form
{
Random Randcolor = Box.randcolor;
Random Rand = Box.rand;
List<Box> Boxes = new List<Box>();
public Form1()
{
InitializeComponent();
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
this.SetStyle(ControlStyles.UserPaint, true);
}
private void button1_Click(object sender, EventArgs e)
{
// Box tmp = new Box(100, 100, 40);
// Boxes.Add(tmp);
for (int x = 1; x < 10; x++)
{
Boxes.Add(
new Box(
Rand.Next(100 + x * 10, this.ClientSize.Width - 100),
Rand.Next(100 + x * 10, this.ClientSize.Height - 100),
Rand.Next(100 + x * 15), this));
//Boxes.Add(new Box(100 + x * 10, 100 + x * 10, x * 15, this));
}
timer1.Enabled = true;
timer2.Enabled = true;
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
foreach (Box tmp in Boxes)
{
tmp.Draw(e.Graphics);
}
}
private void timer1_Tick(object sender, EventArgs e)
{
listBox1.Items.Clear();
foreach (Box tmp in Boxes)
{
tmp.Move();
listBox1.Items.Add(tmp.X + ", " + tmp.Y);
}
this.Invalidate(false);
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void timer2_Tick(object sender, EventArgs e)
{
foreach (Box tmp in Boxes)
{
tmp.Colorchange();
}
}
}
}
請爲您的Box類提供代碼。 – oRole
它已更新 – alvintron
你從哪裏開始定時器? – JMA