Пример #1
0
        public CFOUNDNODE FindNodeAtPoint(AxMap pMap, PointF pt)
        {
            CFOUNDNODE cFOUNDNODE = new CFOUNDNODE();
            float      num        = (float)(this.m_Zoom / pMap.Zoom);

            num = Conversions.ToSingle(Operators.MultiplyObject(num, Interaction.IIf(this.m_MWidth > 0f, pMap.MapScreenWidth / this.m_MWidth, 1)));
            float num2;
            float num3;

            pMap.ConvertCoord(ref num2, ref num3, ref this.m_GocX, ref this.m_GocY, ConversionConstants.miMapToScreen);
            Matrix matrix = new Matrix();

            matrix.Translate(-num2, -num3, MatrixOrder.Append);
            matrix.Scale(1f / num, 1f / num, MatrixOrder.Append);
            PointF[] array = new PointF[]
            {
                pt
            };
            matrix.TransformPoints(array);
            PointF pt2 = new PointF(array[0].X, array[0].Y);

            checked
            {
                CFOUNDNODE result;
                for (int i = this.m_GObjs.Count - 1; i >= 0; i += -1)
                {
                    GraphicObject graphicObject = this.m_GObjs[i];
                    int           num4          = graphicObject.FindNodeAtPoint(pt2, 4f);
                    if (num4 > -1)
                    {
                        int nodeIndex = num4;
                        cFOUNDNODE.FoundObject = graphicObject;
                        cFOUNDNODE.NodeIndex   = nodeIndex;
                        result = cFOUNDNODE;
                        return(result);
                    }
                }
                result = null;
                return(result);
            }
        }