2017-08-15 6 views
0

Ich versuche eine App zu erstellen, die skiasharp auf einem Overlay für die Kamera auf dem iPhone (nativ) verwendet. Mein Kamerastrom erscheint gut, aber keine Überlagerung. die anfängliche Viewcontroller, der den Strom erzeugt wie folgt aussieht:create skiasharp Kameraüberlagerung xamarin ios

public async override void ViewDidLoad() 
    { 
     base.ViewDidLoad(); 
     await AuthorizeCameraUse(); 

     imagePicker = new UIImagePickerController(); 

     // set our source to the camera 
     imagePicker.SourceType = UIImagePickerControllerSourceType.Camera; 

     // set 
     imagePicker.MediaTypes = new string[] { "public.image" }; 



     imagePicker.CameraOverlayView = new CameraOverlayView(); 

     imagePicker.ModalPresentationStyle = UIModalPresentationStyle.CurrentContext; 
     . . . 

meine CameraOverlayView wie folgt aussieht:

public class CameraOverlayView :SKCanvasView 
{ 
    public CameraOverlayView() : base() 
    { 
     Initialize(); 
    } 
    public CameraOverlayView(CGRect frame) : base(frame) { 
     Initialize(); 
    } 
    SKPaint paint = new SKPaint 
    { 
     Style = SKPaintStyle.Fill, 
     Color = SKColors.Red, 
     StrokeWidth = 25 
    }; 

    protected void Initialize() 
    { 

     this.PaintSurface += CameraOverlayView_PaintSurface; 
     //using (var surface = SKSurface.Create(640, 480, SKColorType.Rgba8888, SKAlphaType.Premul)) 
     //{ 
     // SKCanvas myCanvas = surface.Canvas; 
     // myCanvas.DrawCircle(300, 300, 100, paint); 
     // // Your drawing code goes here. 
     //} 
    } 

    private void CameraOverlayView_PaintSurface(object sender, SKPaintSurfaceEventArgs e) 
    { 
     var surface = e.Surface; 
     // then we get the canvas that we can draw on 
     var canvas = surface.Canvas; 
     // clear the canvas/view 
     canvas.Clear(SKColors.White); 


     // DRAWING SHAPES 

     // create the paint for the filled circle 
     var circleFill = new SKPaint 
     { 
      IsAntialias = true, 
      Style = SKPaintStyle.Fill, 
      Color = SKColors.Blue 
     }; 
     // draw the circle fill 
     canvas.DrawCircle(100, 100, 40, circleFill); 
    } 
} 

mein Paint-Ereignis nie ausgelöst wird, wenn ich diesen Code in einfachen Beispiel führen Sie es tut.

Antwort

0

Dank Russ Fustino Hilfe stellt sich heraus, dass ich nicht den CameraOverlayView (CGRect frame) : base (frame) Konstruktor verwendet und deshalb wird die DrawInSurface Überladung nicht aufgerufen. Nichts zu zeichnen. Als ich das tat, feuerte das Paint Event.