UWP MapControl LocalMapTileDataSource 和 tile 的图像自定义不透明度
UWP MapControl LocalMapTileDataSource and tile's image custom opacity on fly
我使用 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 值。目前无法在整个图块图层上设置全局不透明度值,因为这会与位图中已经存在的不透明度信息发生冲突。
我使用 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 值。目前无法在整个图块图层上设置全局不透明度值,因为这会与位图中已经存在的不透明度信息发生冲突。