为热图混合我的热点的颜色渐变?

时间:2021-06-14 13:21:21

标签: c# uwp heatmap uwp-xaml

我想使用 MapControl 在通用 Windows 平台应用程序中创建热图。

到目前为止,我已经能够通过使用带有 RadialGradientBrush 的椭圆创建热点,但是我找不到一种方法来让每个点的颜色混合在一起。到目前为止,结果是这样的:

Overlapping Heat Points

我看到这个 HeatMap Style Gradients in .NET 与我的问题类似,但是那里的解决方案使用了 UWP 不支持的 System.Drawing

有没有办法将每个点的颜色渐变混合在一起,如上面的链接所示?

这是我用来创建热点的代码:

private Ellipse CreateHeatPoint()
        {
            var ellipse = new Ellipse();
            
            var brush = new RadialGradientBrush();

            var stop1 = new GradientStop();
            var stop2 = new GradientStop();
            var stop3 = new GradientStop();

            stop1.Color = Color.FromArgb(255, 255, 0, 0);
            stop1.Offset = 0.0;
            stop2.Color = Color.FromArgb(216, 255, 255, 0);
            stop2.Offset = 0.5;
            stop3.Color = Colors.Transparent;
            stop3.Offset = 1;

            brush.GradientStops.Add(stop1);
            brush.GradientStops.Add(stop2);
            brush.GradientStops.Add(stop3);

            ellipse.Height = 60;
            ellipse.Width = 60;
            ellipse.Fill = brush;
            ellipse.Opacity = 1;

            return ellipse;
        }

这是我用来添加地图控件的代码:

 private void AddHeatPointToMap(BasicGeoposition geopoint)
        {
            var heatpoint = CreateHeatPoint();
            mapControl.Children.Add(heatpoint);

            MapControl.SetLocation(heatpoint, new Geopoint(geopoint));
            MapControl.SetNormalizedAnchorPoint(heatpoint, new Point(0.5, 0.5));
        }

0 个答案:

没有答案