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