Получить координаты пикселей через граничные координаты

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

образцы кода будут оценены.

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

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

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

Требуемая площадь

необходимая область


person Visuddha Karunaratne    schedule 16.11.2011    source источник


Ответы (2)


Что вам нужно, так это алгоритм «точка в полигоне» ( 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/ )

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

person Efrain    schedule 16.11.2011

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

person user978122    schedule 16.11.2011
comment
Я уже получаю пиксель без проводов через фотобокс, но проблема заключается в том, чтобы найти площадь пикселя формы. - person Visuddha Karunaratne; 16.11.2011
comment
Может быть, это то, что вы ищете? support.microsoft.com/kb/892462 - person user978122; 16.11.2011