问题描述
我使用 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 值。目前无法在整个切片图层上设置全局不透明度值,因为这会与位图中已经存在的不透明度信息发生冲突。