|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Закрашивание ячеек в picturebox Visual Studio C# |
|
Разное - [решено] Закрашивание ячеек в picturebox Visual Studio C#
|
Новый участник Сообщения: 16 |
Профиль | Отправить PM | Цитировать
Здравствуйте, есть следующая задача:
- создать сетку; - обеспечить в ней смену цвета ячейки по нажатию клавиши мыши. Один клик окрашивает ячейку в черный цвет, второй клик возвращает прежний цвет. получилось создать сетку в 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--; } } |
|
Отправлено: 16:39, 18-09-2014 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Глобальная переменная (tmp), хранящая ссылку на нажатый объект ( координаты, кнопка, имя или что то еще).
При нажатии делать следующее: 1. Если tmp != null то закрашиваем ее в первоначальный цвет 2. Закрашиваем текущий элемент черным 3. Присваиваем tmp равному текущему элементу. Все. А обязательно делать это в PictureBox? не проще сделать DataGrid, DataGridView, разметочный Table или что то подобное? Тогда не надо возиться с координатами и прочим, достаточно просто указать нужную ячейку. |
------- Отправлено: 09:53, 19-09-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1404
|
Профиль | Отправить PM | Цитировать В двухмерный массив цветов состояние можно попробовать сохранять.
Если в первый раз произойдет клик по ячейке 1,1, а затем 2,2 и (3,3 и снова 1,1 то возвращение после 4 клика, а значит нужно постоянно хранить цвет каждого элемента сетки. После выхода из функции, данные о цвете не сохраняются, а переменные не статические, поэтому цвет не возвращается. При выходе из функции, локальные переменные функции очищаются, то есть делаются "мусором" , и их каждый раз откуда-то надо восстанавливать |
------- Отправлено: 14:54, 19-09-2014 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Delirium, mrcnn, а нельзя ли просто получать текущий цвет из координат щелчка мышкой?!
|
Отправлено: 16:01, 19-09-2014 | #4 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Iska, можно, но зачем? Это лишняя работа по поиску, а в моем варианте искать ничего не надо.
|
|
------- Отправлено: 01:59, 22-09-2014 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Delirium:
Цитата Delirium:
Цитата Delirium:
Цитата mrcnn:
Если второе: Цитата Delirium:
Мне просто было интересно узнать, можно ли так: Цитата Iska:
|
||||||
Отправлено: 14:42, 22-09-2014 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Save Visual Studio 2005 - Open Visual Studio 2003 | XCodeR | Программирование и базы данных | 3 | 07-07-2008 22:47 | |
Софт/IDE - Visual Studio .Net | mrcnn | Программирование и базы данных | 1 | 08-06-2008 21:05 | |
visual studio 2005 | holder | Microsoft Windows 2000/XP | 0 | 29-10-2006 21:33 | |
visual studio c++ 7 | ptt | Программирование и базы данных | 1 | 27-07-2004 16:13 | |
Visual Studio 7.0 | Bally | Программирование и базы данных | 1 | 26-02-2004 13:14 |
|