System.ArgumentNullException: '值不能为空。参数名称:输入'Xamarin?
Posted
技术标签:
【中文标题】System.ArgumentNullException: \'值不能为空。参数名称:输入\'Xamarin?【英文标题】:System.ArgumentNullException: 'Value cannot be null. Parameter name: input' Xamarin?System.ArgumentNullException: '值不能为空。参数名称:输入'Xamarin? 【发布时间】:2021-10-23 06:00:40 【问题描述】:sKSVG.Load(stream)
中的 Xamarin 有问题:
System.ArgumentNullException: 'Value cannot be null. Parameter name: input'
using(Stream stream = typeof(SVGImage).GetTypeInfo().Assembly.GetManifestResourceStream(assembly.Name + ".Images."+ Source))
SkiaSharp.Extended.Svg.SKSvg sKSVG = new SkiaSharp.Extended.Svg.SKSvg();
sKSVG.Load(stream);
SKImageInfo imageInfo = e.Info;
sKCanvas.Translate(imageInfo.Width / 2f, imageInfo.Height / 2f);
SKRect rectBounds = sKSVG.ViewBox;
float xRatio = imageInfo.Width / rectBounds.Width;
float yRatio = imageInfo.Height / rectBounds.Height;
float minRatio = Math.Min(xRatio, yRatio);
sKCanvas.Scale(minRatio);
sKCanvas.Translate(-rectBounds.MidX, -rectBounds.MidY);
sKCanvas.DrawPicture(sKSVG.Picture);
【问题讨论】:
请不要将代码或错误作为图片发布 我像@jason 一样发布问题 请edit您的问题添加信息,不要使用回答功能。您还应该发布异常堆栈跟踪stream
为空。你需要弄清楚原因。
【参考方案1】:
我想你可能忘记为图片资源设置Buidl Action
。
您可以将其BuildAction
设置为EmbeddedResource
。
那么你可以得到这样的流:
var type = typeof(MainPage).GetTypeInfo();
var assembly = type.Assembly;
using (Stream stream = assembly.GetManifestResourceStream(assembly.GetName().Name+ ".Images." + "your svg.svg"))
SKSvg sKSvg = new SKSvg();
sKSvg.Load(stream);
...
请参阅https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/graphics/skiasharp/basics/bitmaps#loading-a-bitmap-resource。
【讨论】:
以上是关于System.ArgumentNullException: '值不能为空。参数名称:输入'Xamarin?的主要内容,如果未能解决你的问题,请参考以下文章