${mapping_PolygonBase_Title}

${mapping_PolygonBase_Description}
Наследование: ShapeElement
Пример #1
0
        private void Activate()
        {
            if (Map == null || Map.Layers == null)
            {
                return;
            }

            polygon = new PolygonElement();
            #region 所有风格的控制
            polygon.Stroke = Stroke;
            polygon.StrokeThickness = StrokeThickness;
            polygon.StrokeMiterLimit = StrokeMiterLimit;
            polygon.StrokeDashOffset = StrokeDashOffset;
            polygon.StrokeDashArray = StrokeDashArray;
            polygon.StrokeDashCap = StrokeDashCap;
            polygon.StrokeEndLineCap = StrokeEndLineCap;
            polygon.StrokeLineJoin = StrokeLineJoin;
            polygon.StrokeStartLineCap = StrokeStartLineCap;
            polygon.Opacity = Opacity;
            polygon.Fill = Fill;
            polygon.FillRule = FillRule;
            #endregion
            points = new Point2DCollection();
            polygon.Point2Ds = points;
            points.Add(startPt);

            DrawLayer = new ElementsLayer();

            Map.Layers.Add(DrawLayer);
            DrawLayer.Children.Add(polygon);

            isActivated = true;
            isDrawing = true;
        }
Пример #2
0
        private void Activate(Point2D firstPoint)
        {
            if (Map == null || Map.Layers == null)
            {
                return;
            }

            DrawLayer = new ElementsLayer();

            Map.Layers.Add(DrawLayer);
            _startPoint = firstPoint;

            _polygon = new PolygonElement();
            #region 所有风格的控制
            _polygon.Stroke = this.Stroke;
            _polygon.StrokeThickness = this.StrokeThickness;
            _polygon.StrokeMiterLimit = this.StrokeMiterLimit;
            _polygon.StrokeDashOffset = this.StrokeDashOffset;
            _polygon.StrokeDashArray = this.StrokeDashArray;
            _polygon.StrokeDashCap = this.StrokeDashCap;
            _polygon.StrokeEndLineCap = this.StrokeEndLineCap;
            _polygon.StrokeLineJoin = this.StrokeLineJoin;
            _polygon.StrokeStartLineCap = this.StrokeStartLineCap;
            _polygon.Opacity = this.Opacity;
            _polygon.Fill = this.Fill;
            _polygon.FillRule = this.FillRule;
            #endregion

            _points = new Point2DCollection();
            _polygon.Point2Ds = _points;
            _points.Add(firstPoint);
            _pointsCount++;
            _points.Add(firstPoint.Clone());
            _pointsCount++;
            DrawLayer.Children.Add(_polygon);

            _isActivated = true;
        }
        private void Activate(Point2D firstPoint)
        {
            _polygon = new PolygonElement();
            _textBlockContainer = new List<TextBlock>();
            #region 所有风格的控制
            _polygon.Stroke = Stroke;
            _polygon.StrokeThickness = StrokeThickness;
            _polygon.StrokeMiterLimit = StrokeMiterLimit;
            _polygon.StrokeDashOffset = StrokeDashOffset;
            _polygon.StrokeDashArray = StrokeDashArray;
            _polygon.StrokeDashCap = StrokeDashCap;
            _polygon.StrokeEndLineCap = StrokeEndLineCap;
            _polygon.StrokeLineJoin = StrokeLineJoin;
            _polygon.StrokeStartLineCap = StrokeStartLineCap;
            _polygon.Opacity = Opacity;
            _polygon.Fill = Fill;
            _polygon.FillRule = FillRule;
            #endregion

            _points = new Point2DCollection();
            _polygon.Point2Ds = _points;
            _points.Add(firstPoint);
            _pointsCount++;
            _points.Add(firstPoint.Clone());
            _pointsCount++;
            DrawLayer.Children.Add(_polygon);

            TextBlock textBlock = new TextBlock();
            textBlock.FontWeight = FontWeights.ExtraBlack;
            textBlock.Foreground = new SolidColorBrush(Colors.White);
            textBlock.Text = "起点";
            _textBlockContainer.Add(textBlock);

            DrawLayer.AddChild(textBlock, firstPoint);
            _isActivated = true;
        }
 private void Complete()
 {
     _points = null;
     _isActivated = false;
     _pointsCount = 0;
     _polygon = null;
     _textBlockContainer = null;
 }
        public override void OnPointerReleased(PointerRoutedEventArgs e)
        {
            if (this.points != null)
            {
                GeoRegion geoRegion = new GeoRegion();
                points.Add(a0);
                geoRegion.Parts.Add(points);

                PolygonElement pPen = new PolygonElement()
                {
                    Point2Ds = points,
                    #region 所有风格的控制
                    Stroke = this.Stroke,
                    StrokeThickness = this.StrokeThickness,
                    StrokeMiterLimit = this.StrokeMiterLimit,
                    StrokeDashOffset = this.StrokeDashOffset,
                    StrokeDashArray = this.StrokeDashArray,
                    StrokeDashCap = this.StrokeDashCap,
                    StrokeEndLineCap = this.StrokeEndLineCap,
                    StrokeLineJoin = this.StrokeLineJoin,
                    StrokeStartLineCap = this.StrokeStartLineCap,
                    Opacity = this.Opacity,
                    Fill = this.Fill,
                    FillRule = this.FillRule
                    #endregion
                };

                DrawEventArgs args2 = new DrawEventArgs
                {
                    DrawName = Name,
                    Element = pPen,
                    Geometry = geoRegion
                };

                Deactivate();
                OnDrawComplete(args2);
            }
            e.Handled = true;
            base.OnPointerReleased(e);
        }
 public override void Deactivate()
 {
     isActivated = false;
     isDrawing = false;
     oldPentagrams = null;
     pentagram = null;
     points = null;
     if (DrawLayer != null)
     {
         DrawLayer.Children.Clear();
     }
     if (Map != null)
     {
         Map.Layers.Remove(DrawLayer);
     }
 }
        private void Activate()
        {
            pentagram = new PolygonElement();
            #region 所有风格的控制
            pentagram.Stroke = this.Stroke;
            pentagram.StrokeThickness = this.StrokeThickness;
            pentagram.Fill = this.Fill;
            pentagram.FillRule = this.FillRule;
            pentagram.Opacity = this.Opacity;
            pentagram.StrokeMiterLimit = this.StrokeMiterLimit;
            pentagram.StrokeDashOffset = this.StrokeDashOffset;
            pentagram.StrokeDashArray = this.StrokeDashArray;
            pentagram.StrokeDashCap = this.StrokeDashCap;
            pentagram.StrokeEndLineCap = this.StrokeEndLineCap;
            pentagram.StrokeLineJoin = this.StrokeLineJoin;
            pentagram.StrokeStartLineCap = this.StrokeStartLineCap;
            #endregion
            a0 = new Point2D();
            a1 = new Point2D();
            a2 = new Point2D();
            a3 = new Point2D();
            a4 = new Point2D();

            points = new Point2DCollection();
            pentagram.Point2Ds = points;
            oldPentagrams = new List<PolygonElement>();

            DrawLayer = new ElementsLayer();
            Map.Layers.Add(DrawLayer);

            isActivated = true;
            isDrawing = true;
        }
Пример #8
0
 /// <summary>${ui_action_DrawPolygon_method_deactivate_D}</summary>
 public override void Deactivate()
 {
     _isActivated = false;
     _polygon = null;
     _points = null;
     _pointsCount = 0;
     _startPoint = Point2D.Empty;
     if (DrawLayer != null)
     {
         DrawLayer.Children.Clear();
     }
     if (Map != null && Map.Layers != null)
     {
         Map.Layers.Remove(DrawLayer);
     }
 }
Пример #9
0
        private void endDraw(bool isCancel = false)
        {
            if (_points != null)
            {
                while (_points.Count > _pointsCount)
                {
                    _points.RemoveAt(_points.Count - 2);
                }
                PolygonElement pRegion = new PolygonElement()
                {
                    Point2Ds = _points.Clone(),//不克隆,在返回后还与下面的GeoRegion指向一个内存地址
                    #region 所有风格的控制
                    Stroke = this.Stroke,
                    StrokeThickness = this.StrokeThickness,
                    StrokeMiterLimit = this.StrokeMiterLimit,
                    StrokeDashOffset = this.StrokeDashOffset,
                    StrokeDashArray = this.StrokeDashArray,
                    StrokeDashCap = this.StrokeDashCap,
                    StrokeEndLineCap = this.StrokeEndLineCap,
                    StrokeLineJoin = this.StrokeLineJoin,
                    StrokeStartLineCap = this.StrokeStartLineCap,
                    Opacity = this.Opacity,
                    Fill = this.Fill,
                    FillRule = this.FillRule
                    #endregion
                };//构造返回Element对象

                GeoRegion geoRegion = new GeoRegion();//构造返回的Geometry

                geoRegion.Parts.Add(_points);

                DrawEventArgs args = new DrawEventArgs
                {
                    DrawName = Name,
                    Element = pRegion,    //Element = this.polyline  //直接返回是固定像素的
                    Geometry = geoRegion,
                    Canceled = isCancel
                };

                Deactivate();
                OnDrawCompleted(args);
            }
        }
Пример #10
0
        void MyMap_ViewBoundsChanged(object sender, ViewBoundsEventArgs e)
        {
            #region Ellipse
            Ellipse myellipse = new Ellipse();
            myellipse.Fill = new SolidColorBrush(Colors.Red);
            Rectangle2D ellbounds = new Rectangle2D(119.5, 21, 122.5, 26);
            this.elementsLayer.AddChild(myellipse, ellbounds);
            MyEllipseStory.Stop();

            Storyboard.SetTarget(myDoubleAnimation, myellipse);
            MyEllipseStory.Begin();

            #endregion

            #region Pushpin
            Pushpin beijing = new Pushpin();
            beijing.Location = new Point2D(116.2, 39.6);
            this.elementsLayer.AddChild(beijing);

            Pushpin ulanBator = new Pushpin();
            ulanBator.Location = new Point2D(106.5, 47.6);
            ulanBator.Background = new SolidColorBrush(Colors.Blue);
            this.elementsLayer.AddChild(ulanBator);

            Pushpin moscow = new Pushpin();
            moscow.Location = new Point2D(37.4, 55.5);
            moscow.Background = new SolidColorBrush(Colors.Yellow);
            this.elementsLayer.AddChild(moscow);


            Pushpin prague = new Pushpin();
            prague.Location = new Point2D(14.3, 50.1);
            prague.Background = new SolidColorBrush(Colors.Orange);
            this.elementsLayer.AddChild(prague);

            Pushpin berlin = new Pushpin();
            berlin.Location = new Point2D(13.3, 52.3);
            berlin.Background = new SolidColorBrush(Colors.Purple);
            this.elementsLayer.AddChild(berlin);
            #endregion

            #region Polylinebase
            PolygonElement line = new PolygonElement();
            line.Stroke = new SolidColorBrush(Colors.Yellow);
            line.StrokeThickness = 3;
            line.Opacity = 1;
            line.StrokeDashArray = new DoubleCollection { 3, 3 };
            line.StrokeEndLineCap = PenLineCap.Triangle;
            Point2DCollection points = new Point2DCollection();
            points.Add(new Point2D(121.3, 25));
            points.Add(new Point2D(116.2, 39.6));
            points.Add(new Point2D(106.5, 47.6));
            points.Add(new Point2D(37.4, 55.5));
            points.Add(new Point2D(14.3, 50.1));
            points.Add(new Point2D(13.3, 52.3));
            points.Add(new Point2D(0.1, 51.3));
            line.Point2Ds = points;
            this.elementsLayer.AddChild(line);
            #endregion

            #region PolygonElement
            PolygonElement polygon = new PolygonElement();
            polygon.Stroke = new SolidColorBrush(Colors.Purple);
            polygon.Opacity = 0.5;
            polygon.Fill = this.British;
            Point2DCollection gonpoints = new Point2DCollection();
            gonpoints.Add(new Point2D(-8, 61));
            gonpoints.Add(new Point2D(-6, 55));
            gonpoints.Add(new Point2D(-8, 50));
            gonpoints.Add(new Point2D(2, 50));
            gonpoints.Add(new Point2D(1, 61));
            polygon.Point2Ds = gonpoints;
            this.elementsLayer.AddChild(polygon);
            #endregion

            #region Button
            Button btn = new Button();
            btn.Content = "点击";
            Brush btnbackground = new SolidColorBrush(Colors.Blue);
            btn.SetValue(Button.BackgroundProperty, btnbackground);
            btn.Click += new RoutedEventHandler(btn_Click);
            Rectangle2D btnbounds = new Rectangle2D(95, 29, 115, 43);
            btn.SetValue(ElementsLayer.BBoxProperty, btnbounds);
            this.elementsLayer.AddChild(btn);
            #endregion

            MyMap.ViewBoundsChanged -= MyMap_ViewBoundsChanged;
        }
Пример #11
0
 /// <summary>${ui_action_DrawFreePolygon_method_deactivate_D}</summary>
 public override void Deactivate()
 {
     isActivated = false;
     isDrawing = false;
     polygon = null;
     points = null;
     if (DrawLayer != null)
     {
         DrawLayer.Children.Clear();
     }
     if (Map != null && Map.Layers != null)
     {
         Map.Layers.Remove(DrawLayer);
     }
 }
Пример #12
0
        private void endDraw(bool isCancel = false)
        {
            if (points != null)
            {
                PolygonElement pRegion = new PolygonElement()
                {
                    Point2Ds = this.points.Clone(),
                    #region 所有风格的控制
                    Stroke = this.Stroke,
                    StrokeThickness = this.StrokeThickness,
                    StrokeMiterLimit = this.StrokeMiterLimit,
                    StrokeDashOffset = this.StrokeDashOffset,
                    StrokeDashArray = this.StrokeDashArray,
                    StrokeDashCap = this.StrokeDashCap,
                    StrokeEndLineCap = this.StrokeEndLineCap,
                    StrokeLineJoin = this.StrokeLineJoin,
                    StrokeStartLineCap = this.StrokeStartLineCap,
                    Opacity = this.Opacity,
                    Fill = this.Fill,
                    FillRule = this.FillRule
                    #endregion
                };
                GeoRegion geoRegion = new GeoRegion();//构造返回的Geometry
                points.Add(startPt);//需要添加起始点做为最后一个点
                geoRegion.Parts.Add(points);

                DrawEventArgs args = new DrawEventArgs
                {
                    DrawName = Name,
                    Element = pRegion,
                    Geometry = geoRegion,
                    Canceled = isCancel
                };
                Deactivate();
                OnDrawCompleted(args);
            }
        }