![]() |
Закрашивание ячеек в picturebox Visual Studio C#
Здравствуйте, есть следующая задача:
- создать сетку; - обеспечить в ней смену цвета ячейки по нажатию клавиши мыши. Один клик окрашивает ячейку в черный цвет, второй клик возвращает прежний цвет. получилось создать сетку в picturebox и закрасить любую ячейку в черный цвет по нажатию. не могу сделать так, чтобы после второго нажатия возвращался исходный цвет. Код:
private void pictureBox1_MouseClick(object sender, MouseEventArgs e) |
Глобальная переменная (tmp), хранящая ссылку на нажатый объект ( координаты, кнопка, имя или что то еще).
При нажатии делать следующее: 1. Если tmp != null то закрашиваем ее в первоначальный цвет 2. Закрашиваем текущий элемент черным 3. Присваиваем tmp равному текущему элементу. Все. А обязательно делать это в PictureBox? не проще сделать DataGrid, DataGridView, разметочный Table или что то подобное? Тогда не надо возиться с координатами и прочим, достаточно просто указать нужную ячейку. |
В двухмерный массив цветов состояние можно попробовать сохранять.
Если в первый раз произойдет клик по ячейке 1,1, а затем 2,2 и (3,3 и снова 1,1 то возвращение после 4 клика, а значит нужно постоянно хранить цвет каждого элемента сетки. После выхода из функции, данные о цвете не сохраняются, а переменные не статические, поэтому цвет не возвращается. При выходе из функции, локальные переменные функции очищаются, то есть делаются "мусором" , и их каждый раз откуда-то надо восстанавливать |
Delirium, mrcnn, а нельзя ли просто получать текущий цвет из координат щелчка мышкой?!
|
Iska, можно, но зачем? Это лишняя работа по поиску, а в моем варианте искать ничего не надо.
|
Цитата:
Цитата:
Цитата:
Цитата:
Если второе: Цитата:
Мне просто было интересно узнать, можно ли так: Цитата:
|
Время: 04:28. |
Время: 04:28.
© OSzone.net 2001-