UWP MapControl LocalMapTileDataSource 和动态图块的图像自定义不透明度

问题描述

我使用 LocalmapTileDataSource 并希望为 tile 的图像应用自定义不透明度。 我发现没有办法让它飞起来?

这是我的代码

private void AddLocalmapTileDataSource()
{
     MapZoomLevelRange range;
     range.Min = 8;
     range.Max = 16;
     var dataSource = new LocalmapTileDataSource();
     dataSource.UriRequested += (s,e) =>
     {
          var deferral = e.Request.GetDeferral();
          var qk = TileSystem.TileXYToQuadKey(e.X,e.Y,e.ZoomLevel);
          e.Request.Uri = new Uri($"ms-appx:///Tiles/{qk}.png");
          deferral.Complete();
     };

     var tileSource = new MapTileSource(dataSource)
     {
         ZoomLevelRange = range
     };

     myMap.TileSources.Add(tileSource);
     tileSource.Layer = MapTileLayer.AreaOverlay;
     tileSource.IsTransparencyEnabled = true;
     tileSource.TilePixelSize = 256;
}

解决方法

当您像这样从 PNG 加载图块时,它会读取 PNG 中每个像素的不透明度。如果要更改不透明度,则需要更新每个像素中的 PNG alpha 值。目前无法在整个切片图层上设置全局不透明度值,因为这会与位图中已经存在的不透明度信息发生冲突。