Xamarin表单(android项目)使用Skia图形库渲染图像时出错
我正在尝试使用xamarin forms解决方案中的skia图形库加载和渲染图像。当我尝试渲染运行android项目的图像时,出现以下错误:Xamarin表单(android项目)使用Skia图形库渲染图像时出错,xamarin,xamarin.android,xamarin.forms,skia,skiasharp,Xamarin,Xamarin.android,Xamarin.forms,Skia,Skiasharp,我正在尝试使用xamarin forms解决方案中的skia图形库加载和渲染图像。当我尝试渲染运行android项目的图像时,出现以下错误: Value cannot be null. Parameter name: codec 代码如下: void OnPainting(object sender, SKPaintSurfaceEventArgs e) { var surface = e.Surface; var canvas = surface.Canvas;
Value cannot be null. Parameter name: codec
代码如下:
void OnPainting(object sender, SKPaintSurfaceEventArgs e)
{
var surface = e.Surface;
var canvas = surface.Canvas;
canvas.Clear(SKColors.White);
var filename = "test.jpg";
using (var stream = new SKFileStream(filename))
using (var bitmap = SKBitmap.Decode(stream)) // the error occurs on this line
using (var paint = new SKPaint())
{
canvas.DrawBitmap(bitmap, SKRect.Create(200, 200), paint);
}
}
我在网上找不到xamarin的任何示例代码。任何样本代码或链接将不胜感激
提前谢谢
值不能为null。参数名称:编解码器
我认为您可能在这里得到一个空对象:使用var stream=new SKFileStreamfilename。我试着制作了一个演示,效果很好
XAML:
代码隐藏:
PaintingObject发送方SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs e的私有无效
{
var表面=e.表面;
var canvas=surface.canvas;
var assembly=typeofPage1.GetTypeInfo.assembly;
var fileStream=assembly.GetManifestResourceStreamYOUR-FILE-FULL-NAME;
//清除画布/填充白色
canvas.DrawColorSKColors.White;
//从流中解码位图
使用var stream=new SKManagedStreamfileStream
使用var bitmap=SKBitmap.Decodestream
使用var paint=新SKPaint
{
//创建图像过滤器
使用var filter=SKImageFilter.CreateBlur5,5
{
paint.ImageFilter=过滤器;
//通过过滤器绘制位图
canvas.DrawBitmapbitmap,SKRect.create640480,paint;
}
}
}
上面代码中的文件名应该类似于您的项目名称空间。文件名,并且该文件位于PCL中,并且该文件的生成操作必须是嵌入式资源。有关使用文件的详细信息,请参阅
我在网上找不到xamarin的任何示例代码。任何样本代码或链接将不胜感激
Github上的包本身有一个Xamarin.Forms的代码示例,您可以参考