Рисованные пиксели - это просто цветные пиксели, а не линии или любые другие фигуры, даже если вы использовали DrawLine
или аналогичные методы.
Так что вам нужно выбрать, решать ли проблему по геометрии:графика.
Оба варианта могут быть решены различными способами, в зависимости от потребностей.
Здесь - это пример, который позволяет собирать строки и распознавать их при нажатии на них.
Для совершенно другогоподход, вы можете изменить свой код с простой рисования на Panel
на двухсторонний код рисования: В дополнение к Panel
поверхности краски также в Bitmap
.Сделайте его ClientSize
из Panel
и нарисуйте его с помощью той же команды, но с использованием объекта Graphics
, созданного из этого Bitmap
.Теперь вы можете проверить цвет каждого пикселя с помощью bitmap.GetPixel(x,y)
и использовать местоположения e.X and e.Y
для формирования MouseClick
события Panel.
Подробнее о разнице Нарисуйте на элемент управления растровое изображение
Убедитесь, что код Paint
синхронизирован!Простой способ - переместить код в функцию drawStuff (Graphics g) и вызвать его дважды в событии Paint: один раз с e.Graphics
и один раз с Graphics g = Graphics.FromImage(bitmap)
..
- Геометрия всегдавариант, но линейные алгоритмы сложнее, чем может ожидать один, особенно когда вам нужно округление и провисание.