/// <summary> /// 根据转换后的坐标位置查找转换信息对象 /// </summary> /// <param name="x">点X坐标</param> /// <param name="y">点Y坐标</param> /// <param name="compatibility">是否启用兼容模式。若启用兼容模式, /// 如果没有找到和指定点精确匹配的坐标转换信息对象, /// 则尽量查找距离点最近的坐标转换信息对象</param> /// <param name="onlyIncludeEnabledItem">只对可用的对象进行处理</param> /// <param name="useSourceRect">模式,True:匹配源矩形;False:匹配目标矩形。</param> /// <returns>找到的坐标转换信息对象</returns> public SimpleRectangleTransform GetItemByPoint( float x, float y, bool useSourceRect, bool compatibility, bool onlyIncludeEnabledItem) { if (this.Count == 0) { // 列表为空,没法获得值 return(null); } foreach (SimpleRectangleTransform item in this.myItems) { if (onlyIncludeEnabledItem && item.Enable == false) { continue; } if (useSourceRect) { if (item.SourceRectF.Contains(x, y)) { return(item); } } else { if (item.DescRectF.Contains(x, y)) { return(item); } } }//foreach if (compatibility) { // 寻找距离最近的目标矩形区域 float minLen = 0; int index = 0; for (int iCount = 0; iCount < this.myItems.Count; iCount++) { SimpleRectangleTransform item = myItems[iCount]; if (onlyIncludeEnabledItem && item.Enable == false) { continue; } RectangleF rect = useSourceRect ? item.SourceRectF : item.DescRectF; if (rect.Contains(x, y)) { return(myItems[iCount]); } float len = RectangleCommon.GetDistance(x, y, rect); if (iCount == 0 || len < minLen) { minLen = len; index = iCount; } }//for return(myItems[index]); } else { return(null); } }