Grafitchic
18-09-2014, 16:39
Здравствуйте, есть следующая задача:
- создать сетку;
- обеспечить в ней смену цвета ячейки по нажатию клавиши мыши. Один клик окрашивает ячейку в черный цвет, второй клик возвращает прежний цвет.
получилось создать сетку в picturebox и закрасить любую ячейку в черный цвет по нажатию. не могу сделать так, чтобы после второго нажатия возвращался исходный цвет.
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
int q = e.X; // координата по оси X
int w = e.Y; // координата по оси Y
int x = Convert.ToInt32(textBox1.Text);
int y = Convert.ToInt32(textBox2.Text);
int i = 0;
int j = 0;
int f = pictureBox1.Size.Width / x;
int d = pictureBox1.Size.Height / y;
int c, z;
do
{
i++;
c = i * f;
} while (c <= e.X);
textBox3.Text = Convert.ToString(i);
do
{
j++;
z = j * d;
} while (z < e.Y);
textBox4.Text = Convert.ToString(j);
Graphics g = Graphics.FromHwnd(pictureBox1.Handle);
SolidBrush blackbrush = new SolidBrush(Color.Black);
SolidBrush whitebrush = new SolidBrush(Color.White);
if (k==0)
{
g.FillRectangle(blackbrush, (i - 1) * f, (j - 1) * d, f, d);
k++;
}
else
{
g.FillRectangle(whitebrush, (i - 1) * f, (j - 1) * d, f, d);
k--;
}
}
- создать сетку;
- обеспечить в ней смену цвета ячейки по нажатию клавиши мыши. Один клик окрашивает ячейку в черный цвет, второй клик возвращает прежний цвет.
получилось создать сетку в picturebox и закрасить любую ячейку в черный цвет по нажатию. не могу сделать так, чтобы после второго нажатия возвращался исходный цвет.
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
int q = e.X; // координата по оси X
int w = e.Y; // координата по оси Y
int x = Convert.ToInt32(textBox1.Text);
int y = Convert.ToInt32(textBox2.Text);
int i = 0;
int j = 0;
int f = pictureBox1.Size.Width / x;
int d = pictureBox1.Size.Height / y;
int c, z;
do
{
i++;
c = i * f;
} while (c <= e.X);
textBox3.Text = Convert.ToString(i);
do
{
j++;
z = j * d;
} while (z < e.Y);
textBox4.Text = Convert.ToString(j);
Graphics g = Graphics.FromHwnd(pictureBox1.Handle);
SolidBrush blackbrush = new SolidBrush(Color.Black);
SolidBrush whitebrush = new SolidBrush(Color.White);
if (k==0)
{
g.FillRectangle(blackbrush, (i - 1) * f, (j - 1) * d, f, d);
k++;
}
else
{
g.FillRectangle(whitebrush, (i - 1) * f, (j - 1) * d, f, d);
k--;
}
}