C# 从C语言中的图像获取选定的非规则形状#
我有以下一个问题,我会尽力解释。C# 从C语言中的图像获取选定的非规则形状#,c#,image,get,shape,C#,Image,Get,Shape,我有以下一个问题,我会尽力解释。 我有一张巨大的政治世界地图。我想得到选定国家的形状(例如加纳、尼泊尔或波兰)。我该怎么做呢?这取决于您能提前提供哪些其他信息。从你的问题和评论来看,你似乎打算预先定义你的形状,这样问题就不会太难了。如果用一组点定义每个区域,只需检查选择(可能是鼠标单击或类似操作)是否在多边形内。有很多方法可以做到这一点。我想我已经使用了以下问题的答案之一: 比如: public static bool IsInPolygon(Point[] poly, Point click
我有一张巨大的政治世界地图。我想得到选定国家的形状(例如加纳、尼泊尔或波兰)。我该怎么做呢?这取决于您能提前提供哪些其他信息。从你的问题和评论来看,你似乎打算预先定义你的形状,这样问题就不会太难了。如果用一组点定义每个区域,只需检查选择(可能是鼠标单击或类似操作)是否在多边形内。有很多方法可以做到这一点。我想我已经使用了以下问题的答案之一: 比如:
public static bool IsInPolygon(Point[] poly, Point clickedPoint)
{
if (poly.Length < 3)
{
return false;
}
Point p1, p2;
bool inside = false;
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 < clickedPoint.X) == (clickedPoint.X <= oldPoint.X)
&& (clickedPoint.Y - (long)p1.Y) * (p2.X - p1.X) < (p2.Y - (long)p1.Y) *(clickedPoint.X - p1.X))
{
inside = !inside;
}
oldPoint = newPoint;
}
return inside;
}
公共静态布尔值为多边形(点[]多边形,点单击点)
{
如果(多边形长度<3)
{
返回false;
}
点p1,p2;
bool-inside=false;
点oldPoint=新点(多边形[poly.Length-1].X,多边形[poly.Length-1].Y);
对于(int i=0;ioldPoint.X)
{
p1=旧点;
p2=新点;
}
其他的
{
p1=新点;
p2=旧点;
}
如果((newPoint.X