Xamarin.Forms FFImageLoading SVG 到 ESRI RunTimeImage
Xamarin.Forms FFImageLoading SVGs to ESRI RunTimeImage
将 SVG 转换为 RunTimeImage
。
本质上,我试图找到一种方法在流被包裹在 SVGImageSource
之前访问它,这样我就可以将字节数组输入到 Esri 提供的 ArcGis RunTimeImage
中。
SVG 保存在 PCL.
中
我暂时无法解决这个问题,但以下代码摘录是使用 png 版本的图像来访问 android 项目的可绘制文件夹的工作。
int resourceId = Android.App.Application.Context.Resources.GetIdentifier("atlaspinorange", "drawable", "Atlas.Locations");
var icon = Android.Graphics.BitmapFactory.DecodeResource(Android.App.Application.Context.Resources, resourceId);
var stream = new System.IO.MemoryStream();
icon.Compress(Android.Graphics.Bitmap.CompressFormat.Png, 50, stream);
byte[] byteArray = stream.ToArray();
var image = new Esri.ArcGISRuntime.UI.RuntimeImage(byteArray);
mapView.LocationDisplay.CourseSymbol = new Esri.ArcGISRuntime.Symbology.PictureMarkerSymbol(image);
mapView.LocationDisplay.DefaultSymbol = new Esri.ArcGISRuntime.Symbology.PictureMarkerSymbol(image);
你在找这个
ImageService.Instance.LoadCompiledResource("yourFile.svg").WithCustomDataResolver(new SvgDataResolver(200,200)).AsPNGStreamAsync();
?
将 SVG 转换为 RunTimeImage
。
本质上,我试图找到一种方法在流被包裹在 SVGImageSource
之前访问它,这样我就可以将字节数组输入到 Esri 提供的 ArcGis RunTimeImage
中。
SVG 保存在 PCL.
中我暂时无法解决这个问题,但以下代码摘录是使用 png 版本的图像来访问 android 项目的可绘制文件夹的工作。
int resourceId = Android.App.Application.Context.Resources.GetIdentifier("atlaspinorange", "drawable", "Atlas.Locations");
var icon = Android.Graphics.BitmapFactory.DecodeResource(Android.App.Application.Context.Resources, resourceId);
var stream = new System.IO.MemoryStream();
icon.Compress(Android.Graphics.Bitmap.CompressFormat.Png, 50, stream);
byte[] byteArray = stream.ToArray();
var image = new Esri.ArcGISRuntime.UI.RuntimeImage(byteArray);
mapView.LocationDisplay.CourseSymbol = new Esri.ArcGISRuntime.Symbology.PictureMarkerSymbol(image);
mapView.LocationDisplay.DefaultSymbol = new Esri.ArcGISRuntime.Symbology.PictureMarkerSymbol(image);
你在找这个
ImageService.Instance.LoadCompiledResource("yourFile.svg").WithCustomDataResolver(new SvgDataResolver(200,200)).AsPNGStreamAsync();
?