Quantcast
Channel: Xamarin.Forms — Xamarin Community Forums
Viewing all articles
Browse latest Browse all 77050

SkiaSharp:SKSurface.Create returns alway null

$
0
0

Hi

I want to create my own simple Xamaran.Forms SkiaSharp example based on https://github.com/mono/SkiaSharp/tree/master/samples (which works)

PCL Main Page :

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:TestSkia"
             x:Class="TestSkia.MainPage">

 <Grid>
   <local:SkiaView x:Name="SkiaView"></local:SkiaView>
 </Grid>

</ContentPage>

PCL Skia View

namespace TestSkia
{
    public class SkiaView : View
    {


    }
}

The Android SkiaView and the SkiaViewRenderer



using System; using Android.Views; using Android.Graphics; using SkiaSharp; using Xamarin.Forms; using Xamarin.Forms.Platform.Android; [assembly: ExportRenderer(typeof(TestSkia.SkiaView), typeof(TestSkia.Droid.SkiaViewRenderer))] namespace TestSkia.Droid { public class SikaView : Android.Views.View { readonly SkiaView skiaView; private Bitmap bitmap; public SikaView(Android.Content.Context context, SkiaView skiaView) : base(context) { this.skiaView = skiaView; } protected override void OnDraw(Android.Graphics.Canvas canvas) { base.OnDraw(canvas); if (bitmap == null || bitmap.Width != canvas.Width || bitmap.Height != canvas.Height) { if (bitmap != null) bitmap.Dispose(); bitmap = Bitmap.CreateBitmap(canvas.Width, canvas.Height, Bitmap.Config.Argb8888); } try { using (var surface = SKSurface.Create(canvas.Width, canvas.Height, SKImageInfo.PlatformColorType, SKAlphaType.Premul, bitmap.LockPixels(), canvas.Width * 4)) { var skcanvas = surface.Canvas; skcanvas.Scale(((float)canvas.Width) / (float)skiaView.Width, ((float)canvas.Height) / (float)skiaView.Height); skcanvas.DrawCircle(100, 100, 100, new SKPaint() { Color = new SKColor(155, 155, 155) }); } } finally { // bitmap.UnlockPixels(); } } } public class SkiaViewRenderer : ViewRenderer<SkiaView, TestSkia.Droid.SikaView> { protected override void OnElementChanged(ElementChangedEventArgs<SkiaView> e) { base.OnElementChanged(e); if (Control == null) { var view = new TestSkia.Droid.SikaView(Context, Element); SetNativeControl(view); } } } }

SKSurface.Create returns always null, What I'am doing wrong ?

Thanks Wolfgang


Viewing all articles
Browse latest Browse all 77050

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>