我正在研究一个项目,我需要找到所选区域像素的坐标。我只需点击C#图片框即可获得此坐标。我需要找到图片中显示的灰色区域的像素坐标,以便更改此灰区域的颜色。在C#中有一个定义的方法吗?或请讨论如何存档。
代码示例将受到赞赏。
提前谢谢。
答案 0 :(得分:1)
使用Click事件,从事件中拉出鼠标坐标。如果灰色区域由函数定义,则可以编写一种方法来检查它是否在指定的区域内。如果不是(它只是一个静态图像),您应该使用鼠标坐标来计算您单击的像素,并检查其颜色值。可能有一种方法可以获取鼠标单击的颜色值(但是,我可能会将该方法与OpenGL中的glReadPixel方法混淆)。
答案 1 :(得分:1)
您需要的是多边形点算法(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/)
如果您使用System.Windows.Shapes.Polygon
来表示多边形,也可以使用.Net HitTestCore Method。我不知道这会有多容易。