示例#1
0
            public void Init(MapColorModes mapColor = MapColorModes.Provs, List <Prov> list = null)
            {
                if (list == null)
                {
                    _children.Clear();
                    FindDict = new Dictionary <System.Windows.Media.DrawingVisual, Prov>();

                    ////////////////////
                    var vm = SimpleIoc.Default.GetInstance <MainViewModel>();

                    this.BeginInit();
                    foreach (var prov in vm.Provs)
                    {
                        var visual = CreateDrawingVisualProvince(prov, mapColor);


                        _children.Add(visual);
                        FindDict.Add(visual, prov);
                        prov.Visual = visual;
                    }
                    this.EndInit();
                    ///////////////////

                    var query =
                        vm.Provs.Select(
                            v =>
                            new SimpleProv
                    {
                        Name     = v.Name,
                        Color    = v.Color,
                        Contours = v.Contours
                    });
                    var str = JsonConvert.SerializeObject(query, Formatting.Indented);
                    System.IO.File.WriteAllText("points.json", str);
                }
                else
                {
                    var visuals = FindDict.Where(v => list.Contains(v.Value))
                                  .Where(v => !v.Value.IsLake && !v.Value.IsSea && !v.Value.IsWaste)
                                  .Select(v => v.Key);
                    visuals.ToList().ForEach(v =>
                    {
                        FindDict.Remove(v);
                        _children.Remove(v);
                    });

                    this.BeginInit();
                    foreach (var prov in list)
                    {
                        var visual = CreateDrawingVisualProvince(prov, mapColor);
                        _children.Add(visual);
                        FindDict.Add(visual, prov);
                        prov.Visual = visual;
                    }
                    this.EndInit();
                }
            }
示例#2
0
            private System.Windows.Media.DrawingVisual CreateDrawingVisualProvince(Prov prov, MapColorModes mapColor = MapColorModes.Provs)
            {
                var drawingVisual = new System.Windows.Media.DrawingVisual();
                var dc            = drawingVisual.RenderOpen();

                Brush brush = null;

                if (mapColor == MapColorModes.Provs)
                {
                    var color1 = System.Drawing.Color.FromArgb(prov.Color);
                    brush = new SolidColorBrush(Color.FromRgb(color1.R, color1.G, color1.B));
                }
                else if (mapColor == MapColorModes.Country)
                {
                    var color = Logic.GetCountryColor(prov.Owner);
                    if (color == null)
                    {
                        if (prov.IsLake || prov.IsSea)
                        {
                            var color1 = System.Drawing.Color.FromArgb(prov.Color);
                            brush = new SolidColorBrush(Color.FromRgb(color1.R, color1.G, color1.B));
                        }
                        else if (!prov.IsWaste)
                        {
                            brush = new SolidColorBrush(Colors.LightGray);
                        }
                        else
                        {
                            brush = new SolidColorBrush(Colors.DimGray);
                        }
                    }
                    else
                    {
                        brush = new SolidColorBrush(color.Value);
                    }
                }

                //dc.DrawGeometry(brush,new Pen(Brushes.Red,0),prov.Geometry );

                dc.DrawGeometry(brush, new Pen(brush, 0.45), prov.Geometry);



                //////////////////////////////////////////
                //      FormattedText formattedText = new FormattedText(
                //"11",
                //CultureInfo.GetCultureInfo("en-us"),
                //FlowDirection.LeftToRight,
                //new Typeface(new FontFamily("宋体"), FontStyles.Normal, FontWeights.Normal, FontStretches.Normal),
                //12,
                //Brushes.Red);

                //      Geometry textGeometry = formattedText.BuildGeometry(new Point(0, 0));
                //      var rect = prov.Geometry.Bounds;
                //      var rect1 = textGeometry.Bounds;

                //      var w = rect.Width/rect1.Width;
                //      var h = rect.Height/rect1.Height;

                //      var scale = Math.Min(w, h);
                //      //var max=t
                //      var translateTransform = new ScaleTransform();
                //      //translateTransform.X = -textGeometry.Bounds.Left;
                //      //translateTransform.Y = -textGeometry.Bounds.Top;
                //      dc.PushTransform(translateTransform);
                //      dc.DrawGeometry(Brushes.Red, new Pen(Brushes.Red, 1.0), textGeometry);

                dc.Close();

                return(drawingVisual);
            }