我想使用 MapControl 在通用 Windows 平台应用程序中创建热图。
到目前为止,我已经能够通过使用带有 RadialGradientBrush 的椭圆创建热点,但是我找不到一种方法来让每个点的颜色混合在一起。到目前为止,结果是这样的:
我看到这个 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));
}