Exemplo n.º 1
0
        // 鼠标起来事件
        private void gmapControl_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            bIsLeftButtonDown = false;

            if (polygonElement == null)
            {
                return;
            }

            GMapPolygon   rectPolygon = polygonElement as GMapPolygon;
            List <GPoint> gpointList  = rectPolygon.LocalPoints;

            if (gpointList.Count == 0)
            {
                return;
            }

            GPoint p0 = gpointList[0];
            GPoint p1 = gpointList[1];
            GPoint p2 = gpointList[2];
            GPoint p3 = gpointList[3];

            Point leftUpPoint = new Point((int)p0.X, (int)p0.Y);
            int   width       = 0;
            int   height      = 0;

            width  = Math.Abs((int)p1.X - (int)p0.X);
            height = Math.Abs((int)p2.Y - (int)p1.Y);
            Rectangle rect = new Rectangle(leftUpPoint, new Size(width, height));

            // 框选需要清除上一次的图元
            foreach (IMFElement ele in elementList)
            {
                ele.HightLight(false);
            }
            elementList.Clear();

            foreach (IMFLayer maplayer in mapLogic.GetLayers())
            {
                foreach (IMFElement element in maplayer.GetElementList())
                {
                    if (element.IsHightLight)
                    {
                        continue;
                    }

                    GMapMarker marker = element as GMapMarker;
                    if (marker == null)
                    {
                        continue;
                    }

                    Point tmpPoint = marker.LocalPosition;
                    if (rect.Contains(tmpPoint))
                    {
                        element.HightLight(true);
                        elementList.Add(element);
                    }
                }
            }

            layer.RemoveElement("select_rect");
            RegistCommondExcuteEvent();
        }