2017-03-08 1 views
1

내 xamarin 폼 솔루션에서 skia 그래픽 라이브러리를 사용하여 이미지를로드하고 렌더링하려고합니다. 나는 이미지를 렌더링 할 때 나는 다음과 같은 오류 수 (안드로이드 프로젝트 실행) :Skam 그래픽 라이브러리를 사용하는 Xamarin forms (android project) 오류 렌더링 이미지

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); 
    } 
} 

내가 자 마린 온라인 어떤 샘플 코드를 찾을 수 없습니다 : 여기

Value cannot be null. Parameter name: codec 

하는 코드입니다. 모든 샘플 코드 또는 링크가 많이 감사하겠습니다. 사전

답변

3

Value cannot be null. Parameter name: codec

에서

덕분에 나는 당신이 여기 null 객체를 얻는 것이 가능하다고 생각 : using (var stream = new SKFileStream(filename)). 데모를 만들려고했는데 제대로 작동합니다.

XAML :

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      xmlns:skiaviews="clr-namespace:SkiaSharp.Views.Forms;assembly=SkiaSharp.Views.Forms" 
      x:Class="FormsIssue6.Page1"> 
    <Grid> 
     <skiaviews:SKCanvasView x:Name="mycanvas" PaintSurface="OnPainting" /> 
    </Grid> 
</ContentPage> 

코드 숨김

private void OnPainting(object sender, SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs e) 
{ 
    var surface = e.Surface; 
    var canvas = surface.Canvas; 

    var assembly = typeof(Page1).GetTypeInfo().Assembly; 
    var fileStream = assembly.GetManifestResourceStream("YOUR-FILE-FULL-NAME"); 
    // clear the canvas/fill with white 
    canvas.DrawColor(SKColors.White); 

    // decode the bitmap from the stream 
    using (var stream = new SKManagedStream(fileStream)) 
    using (var bitmap = SKBitmap.Decode(stream)) 
    using (var paint = new SKPaint()) 
    { 
     // create the image filter 
     using (var filter = SKImageFilter.CreateBlur(5, 5)) 
     { 
      paint.ImageFilter = filter; 

      // draw the bitmap through the filter 
      canvas.DrawBitmap(bitmap, SKRect.Create(640, 480), paint); 
     } 
    } 
} 

위의 코드 파일 이름은 "프로젝트 네임 스페이스" "파일 이름"과 같이해야하고,이 파일에 저장됩니다. 이 파일의 PCL 및 빌드 동작은 "임베디드 리소스"여야합니다. 파일 작업에 대한 자세한 내용은 Files을 참조하십시오.

I cannot find any sample code online for xamarin. Any sample code or links would be much appreciated.

Github에서의 패키지 자체가 Xamarin.Forms에 대한 코드 샘플을 가지고, 당신은 FormsSample를 참조 할 수 있습니다.

+0

지금 고마워! – noobie

관련 문제