首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#从列表中获取所有AOI,其中有一个特定的点

C#从列表中获取所有AOI,其中有一个特定的点
EN

Stack Overflow用户
提问于 2017-03-14 17:00:28
回答 1查看 30关注 0票数 0

我有一个List of AOIs (感兴趣的区域),其中AOI由2点、左上角和右下角(开始点和结束点)定义。

我有一个由PosX and PosY定义的观点。

我想从清单中得到所有这样的AOI,其中有具体的点。我怎样才能最有效地做到这一点?我想用select和哪里函数使用lambda表达式来完成这个任务,但是我想不出如何实现它。

我创建了一个包围AOI的矩形,并测试了其中是否有一个点:

代码语言:javascript
复制
var rect = new RectangleF(aoi.Start.X, aoi.Start.Y, aoi.End.X - aoi.Start.X, aoi.End.Y - aoi.Start.Y));
var liesIn = rect.Contains(pt.PosX, pt.PosY);

但我有一个List<AOIs>。如果我想要包含点pt的列表中的所有AOI,我必须遍历所有的列表,或者我能以某种方式有效地完成它吗?

编辑:,ok,我想出来了。这对我有用。

代码语言:javascript
复制
var result = AOIs.Where(a => new RectangleF(a.Start.X, a.Start.Y, a.Start.X - a.End.X, a.Start.Y - a.End.Y).Contains(pt.PosX, pt.PosY)).ToList();

我不知道我在做些奇怪的事情,但解决办法很简单。

EN

回答 1

Stack Overflow用户

发布于 2017-03-14 17:10:14

我想是这样的:

代码语言:javascript
复制
AOIs.Where(x => 
    x.Start.X < posX
 && x.Start.Y < posY 
 && x.End.X > posX 
 && x.End.Y > posY)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42792137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档