Exemplo n.º 1
0
        public override void Draw(DrawingContext drawingContext, MapArea viewarea, double zoomRate)
        {
            List <PointInt> positions = collector.ToList().ConvertAll <PointInt>(
                new Converter <PointLatLng, PointInt>(ptll => { return(BingMapTileSystem.LatLngToPixelXY(ptll, MapCore.Level)); }));

            foreach (PointInt pt in positions)
            {
                drawingContext.DrawEllipse(Brushes.Black, new Pen(),
                                           new Point((pt.X - viewarea.Area.X) * zoomRate, (pt.Y - viewarea.Area.Y) * zoomRate), radius, radius);
            }
            base.Draw(drawingContext, viewarea, zoomRate);
        }
        public override void Draw(DrawingContext drawingContext, MapArea viewarea, double zoomRate)
        {
            int height = viewarea.Area.Height;
            int width  = viewarea.Area.Width;

            if (height == 0 || width == 0)
            {
                return;
            }
            if (MapCore.IsDragging)
            {
                return;
            }
            positions = collector.ToList().ConvertAll <PointInt>(
                new Converter <PointLatLng, PointInt>(ptll => { return(BingMapTileSystem.LatLngToPixelXY(ptll, MapCore.Level)); }));

            DrawingVisual  visual = new DrawingVisual();
            DrawingContext dc     = visual.RenderOpen();

            for (int i = 0; i < positions.Count; i++)
            {
                dc.DrawEllipse(HeatMapHelper.CreateBrush((byte)Density, GradientStop), null,
                               new Point(positions[i].X - viewarea.Area.X, positions[i].Y - viewarea.Area.Y), CircleRadius, CircleRadius);
            }
            dc.Close();
            RenderTargetBitmap rtb = new RenderTargetBitmap(width, height, 96, 96, PixelFormats.Pbgra32);

            rtb.Render(visual);
            WriteableBitmap bmp = new WriteableBitmap(rtb);

            bmp.Lock();
            for (int i = 0; i < bmp.PixelHeight; i++)
            {
                for (int j = 0; j < bmp.PixelWidth; j++)
                {
                    bmp.SetPixelWithoutLock(i, j, palette);
                }
            }
            bmp.AddDirtyRect(new Int32Rect(0, 0, bmp.PixelWidth, bmp.PixelHeight));
            bmp.Unlock();
            image.Source = bmp;

            image.Width  = viewarea.Area.Width * zoomRate;
            image.Height = viewarea.Area.Height * zoomRate;
            base.Draw(drawingContext, viewarea, zoomRate);
        }
Exemplo n.º 3
0
        public override void Draw(DrawingContext drawingContext, MapArea viewarea, double zoomRate)
        {
            List <PointInt> positions = collector.ToList().ConvertAll <PointInt>(
                new Converter <PointLatLng, PointInt>(ptll => { return(BingMapTileSystem.LatLngToPixelXY(ptll, MapCore.Level)); }));

            for (int i = 0; i < positions.Count; i++)
            {
                drawingContext.DrawEllipse(Brushes.Black, new Pen(),
                                           new Point((positions[i].X - viewarea.Area.X) * zoomRate, (positions[i].Y - viewarea.Area.Y) * zoomRate), radius, radius);
                if (i == 0)
                {
                    continue;
                }
                drawingContext.DrawLine(new Pen(Brushes.Blue, 2),
                                        new Point((positions[i - 1].X - viewarea.Area.X) * zoomRate, (positions[i - 1].Y - viewarea.Area.Y) * zoomRate),
                                        new Point((positions[i].X - viewarea.Area.X) * zoomRate, (positions[i].Y - viewarea.Area.Y) * zoomRate));
            }
            base.Draw(drawingContext, viewarea, zoomRate);
        }