2017-10-10 3 views
0

私はXamarin.Formsの初心者です。私は共有コード/ xaml.csで次のコードをどのように呼び出すことができますか?どのように私の共有コードの依存関係注入スクリーンショットコードを呼び出すには?

public class screenshotManager : IScreenshotManager 
{  

    public static Activity Activity { get; set; } 

    public async System.Threading.Tasks.Task<byte[]> CaptureAsync() 
    { 
     if (Activity == null) 
     { 
      throw new Exception("You have to set ScreenshotManager.Activity in your Android project"); 
     } 

     var view = Activity.Window.DecorView; 
     view.DrawingCacheEnabled = true; 

     Bitmap bitmap = view.GetDrawingCache(true); 

     byte[] bitmapData; 

     using (var stream = new MemoryStream()) 
     { 
      bitmap.Compress(Bitmap.CompressFormat.Png, 0, stream); 
      bitmapData = stream.ToArray(); 
     } 

     return bitmapData; 
    } 
} 
+1

あなたはドキュメントを読んだことがありますか? – Jason

+0

iveはこのコードをクリックイベントに入れようとしましたが、何も起こりませんでした。 DependencyService.Get ()。 CaptureAsync(); –

+0

実装を登録しましたか? [docs asks to](https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/dependency-service/introduction/)[アセンブリ:Xamarin.Forms.Dependency(typeof(screenshotManager))] ' #登録)? –

答えて

0

私がコメントで議論したように、バイト[]からキャプチャされた画像を取得する必要がある場合は、@ Jasonと言ってください。このような

何か:

var imageBytes = await screenshotManager.CaptureAsync(); 
Image imageView = new Image(); 
imageView.Source = ImageSource.FromStream(() => new MemoryStream(imageBytes)); 
関連する問題