Получить координаты пикселей через граничные координаты - PullRequest
1 голос
/ 16 ноября 2011

Я работаю над проектом, мне нужно найти координаты пикселей выбранной области.Я получаю эти координаты, просто нажимая на графическое поле C #.Мне нужно найти пиксельные координаты серой области, как показано на рисунке, чтобы изменить цвет этой области пепла.Есть ли определенный метод в C # сделать это?или, пожалуйста, о том, как заархивировать это.

примеры кода будут оценены.

заранее спасибо.

Выбранные координаты

Selected coordinates

Требуемая зона

required area

Ответы [ 2 ]

1 голос
/ 16 ноября 2011

Вам нужен алгоритм «точка-полигон» (http://en.wikipedia.org/wiki/Point_in_polygon)

static bool PointInPolygon(Point p, Point[] poly)
{
    Point p1, p2;
    bool inside = false;

    if (poly.Length < 3)
    {
        return inside;
    }

    Point oldPoint = new Point(poly[poly.Length - 1].X, poly[poly.Length - 1].Y);

    for (int i = 0; i < poly.Length; i++)
    {
        Point newPoint = new Point(poly[i].X, poly[i].Y);

        if (newPoint.X > oldPoint.X)
        {
            p1 = oldPoint;
            p2 = newPoint;
        }
        else
        {
            p1 = newPoint;
            p2 = oldPoint;
        }

        if ((newPoint.X < p.X) == (p.X <= oldPoint.X) 
            && ((long)p.Y - (long)p1.Y) * (long)(p2.X - p1.X) < ((long)p2.Y - (long)p1.Y) * (long)(p.X - p1.X))
        {
            inside = !inside;
        }

        oldPoint = newPoint;
    }

    return inside;
}

(из http://www.gamedev.net/topic/533455-point-in-polygon-c-implementation/)

Вы также можете использовать.Net Метод HitTestCore , если вы используете System.Windows.Shapes.Polygon для представления своего многоугольника.Я не могу сказать, насколько легко это будет работать.

1 голос
/ 16 ноября 2011

Используйте событие Click и извлеките координаты мыши из события. Если серая область определяется функцией, вы можете написать метод, чтобы проверить, находится ли она в указанной области. Если нет (это просто статичное изображение), вы должны использовать координаты мыши, чтобы вычислить, какой пиксель вы щелкнули, и проверить значение его цвета. Там может быть метод для получения значения цвета, где щелчки мыши (однако, я мог бы путать метод с методом glReadPixel в OpenGL).

...