.NET 4.x Получение цвета пикселя по координате в PictureBox - C#

Узнай цену своей работы

Формулировка задачи:

Здраствуйте. Нужна помощь. Я в pictureBox нарисовал несколько отрезков:
for (int i = 0; i < 4; i++)
e.Graphics.DrawLine(purplePen, new Point(points[i, 0], points[i, 1]), new Point(points[i+1, 0], points[i+1, 1]));
Они между собой соеденены. Мне нужно что бы по этих отрезках бегал некий шарик, но я не могу получиться все точки (пиксели) этих отрезков. Пытался получать координаты по формулах:
Точка A(x,y) отрезок с концевыми точками B(x1,y1) и C(x2,y2) Равенство расписывается по координатно так: px1+(1-p)x2=x py1+(1-p)y2=y Из первого уравнения находим p, подставляем во второе: если получаем равенство и 0<=p<=1, то A на отрезке, иначе - нет.
Пришла идея попросту пройтись по пикселям в PictureBox. Если цвет пикселя соответствует заданому, то занести координаты в массив. Проблема в том, что я не подгружал изображение, а рисовал. Такой способ: if ((pictureBox1.Image as Bitmap).GetPixel(e.X, e.Y)) == Color.Purple) {.....} не работает. Выскакивает ошибка "Ссылка на объект не указывает на экземпляр объекта.". Буду благодарен за помощь.
Еще пытался попросту найти растояние от некой точки к отрезку:
double up = ((y1-y2)*pageX+(x2-x1)*pageY+(x1*y2-x2*y1)); double down = Math.Sqrt( ((x2-x1)*(x2-x1)) + ((y2-y1)*(y2-y1)) ); double dl = Math.Abs(up/down); pageX и pageY координатый некой точки.
Такой способ работает только при условии что отрезок паралелен оси Y или оси X. ((

Решение задачи: «.NET 4.x Получение цвета пикселя по координате в PictureBox»

textual
Листинг программы
 Bitmap bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
            Graphics g = Graphics.FromImage(bmp);
            for (int i = 0; i < 4; i++)
                g.DrawLine(purplePen, new Point(points[i, 0], points[i, 1]), new Point(points[i + 1, 0], points[i + 1, 1]));
            pictureBox1.Image = bmp;
            //дальше проверяешь каждую точку

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы