elahe7
چهارشنبه 02 آذر 1390, 18:41 عصر
این برنامه قراره رنگ هر سیرکل رو نگه داره و با زدن استارت حرکت کنه...مشکل اینجاست بعد از اضافه کردن سیرکل جدید با رنگ جدید سیرکل قبلی هم تغییر رنگ میده..نمیدونم چجور مشکلشو رفع کنم..
public partial class Form1 : Form
{
int s = 0;
int[,] xy;
Pen pen;
Graphics g;
int index = 0;
ColorDialog []ccolor = new ColorDialog[10];
int c_counter = 0;
int[] a;
int[] b;
private void Form1_Load(object sender, EventArgs e)
{
}
public Form1()
{
InitializeComponent();
pen = new Pen(button1.ForeColor,2);
for(int i=0;i<index;i++)
{
pen =new Pen(button1.ForeColor,2);
}
g = panel1.CreateGraphics();
xy = new int[10, 2];
a = new int[10];
b = new int[10];
for (int i = 0; i < 10; i++)
{
a[i] = 3;
b[i] = 3;
}
}
private void b_1_Click(object sender, EventArgs e)
{
Draw();
}
private void b_2_Click(object sender, EventArgs e)
{
timer1.Enabled =! timer1.Enabled;
}
private void timer1_Tick(object sender, EventArgs e)
{
move();
}
private void Draw()
{
if(c_counter==0)
mashang();
if (index < 10)
{
xy[index, 0] = Int32.Parse(t_1.Text);
xy[index, 1] = Int32.Parse(t_2.Text);
int f = index;
g.DrawEllipse(pen, xy[index, 0], xy[index, 1], 20, 20);
index++;
}
else
{
MessageBox.Show("Over flow","Error",MessageBoxButtons.OKCancel,MessageBoxIcon.Error);
}
}
private void move()
{
// bool check = false;
for (int i = 0; i < index; i++)
{
pen = new Pen(Color.NavajoWhite, 2);
g.DrawEllipse(pen, xy[i, 0], xy[i, 1], 20, 20);
xy[i, 0] += a[i];
xy[i, 1] += b[i];
// if (check == false)
{
if (ccolor[i] == null)
{
// if (c_counter == 1)
// ccolor[i] = ccolor[c_counter - 1];
if (i == c_counter)
ccolor[i] = ccolor[c_counter - 1];
else
ccolor[i] = ccolor[c_counter ];
}
}
pen = new Pen(ccolor[i].Color, 2);
g.DrawEllipse(pen, xy[i, 0], xy[i, 1], 20, 20);
}
juction();
}
private void juction()
{
for (int i = 0; i < index; i++)
{
if ((xy[i, 0] <= 0) || (xy[i, 0] >= (panel1.Width - 20)))
a[i] *= (-1);
if ((xy[i, 1] <= 0) || (xy[i, 1] >= (panel1.Height - 20)))
b[i] *= (-1);
}
}
private void button1_Click(object sender, EventArgs e)
{
mashang();
}
void mashang()
{
ColorDialog cd = new ColorDialog();
cd.ShowDialog();
pen.Color = cd.Color;
pen = new Pen(cd.Color);
ccolor[c_counter] = cd;
c_counter++;
button1.ForeColor = cd.Color;
s = 1;
}
public partial class Form1 : Form
{
int s = 0;
int[,] xy;
Pen pen;
Graphics g;
int index = 0;
ColorDialog []ccolor = new ColorDialog[10];
int c_counter = 0;
int[] a;
int[] b;
private void Form1_Load(object sender, EventArgs e)
{
}
public Form1()
{
InitializeComponent();
pen = new Pen(button1.ForeColor,2);
for(int i=0;i<index;i++)
{
pen =new Pen(button1.ForeColor,2);
}
g = panel1.CreateGraphics();
xy = new int[10, 2];
a = new int[10];
b = new int[10];
for (int i = 0; i < 10; i++)
{
a[i] = 3;
b[i] = 3;
}
}
private void b_1_Click(object sender, EventArgs e)
{
Draw();
}
private void b_2_Click(object sender, EventArgs e)
{
timer1.Enabled =! timer1.Enabled;
}
private void timer1_Tick(object sender, EventArgs e)
{
move();
}
private void Draw()
{
if(c_counter==0)
mashang();
if (index < 10)
{
xy[index, 0] = Int32.Parse(t_1.Text);
xy[index, 1] = Int32.Parse(t_2.Text);
int f = index;
g.DrawEllipse(pen, xy[index, 0], xy[index, 1], 20, 20);
index++;
}
else
{
MessageBox.Show("Over flow","Error",MessageBoxButtons.OKCancel,MessageBoxIcon.Error);
}
}
private void move()
{
// bool check = false;
for (int i = 0; i < index; i++)
{
pen = new Pen(Color.NavajoWhite, 2);
g.DrawEllipse(pen, xy[i, 0], xy[i, 1], 20, 20);
xy[i, 0] += a[i];
xy[i, 1] += b[i];
// if (check == false)
{
if (ccolor[i] == null)
{
// if (c_counter == 1)
// ccolor[i] = ccolor[c_counter - 1];
if (i == c_counter)
ccolor[i] = ccolor[c_counter - 1];
else
ccolor[i] = ccolor[c_counter ];
}
}
pen = new Pen(ccolor[i].Color, 2);
g.DrawEllipse(pen, xy[i, 0], xy[i, 1], 20, 20);
}
juction();
}
private void juction()
{
for (int i = 0; i < index; i++)
{
if ((xy[i, 0] <= 0) || (xy[i, 0] >= (panel1.Width - 20)))
a[i] *= (-1);
if ((xy[i, 1] <= 0) || (xy[i, 1] >= (panel1.Height - 20)))
b[i] *= (-1);
}
}
private void button1_Click(object sender, EventArgs e)
{
mashang();
}
void mashang()
{
ColorDialog cd = new ColorDialog();
cd.ShowDialog();
pen.Color = cd.Color;
pen = new Pen(cd.Color);
ccolor[c_counter] = cd;
c_counter++;
button1.ForeColor = cd.Color;
s = 1;
}