如何在我的共享代码中调用依赖注入屏幕截图代码?

问题描述:

我是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

你阅读文档? https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/dependency-service/introduction/ – Jason

+0

我试图把这段代码放入一个单击事件中,但什么也没发生 DependencyService.Get ()。 CaptureAsync(); –

+0

你注册了你的实现吗? '[assembly:Xamarin.Forms.Dependency(typeof(screenshotManager))]'as [docs asked to](https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/dependency-service/introduction/) #注册)? –

如果您需要的是让图像从一个byte []拍摄的,正如我们在讨论的意见,所以你应该做的@Jason说。

事情是这样的:

var imageBytes = await screenshotManager.CaptureAsync(); 
Image imageView = new Image(); 
imageView.Source = ImageSource.FromStream(() => new MemoryStream(imageBytes));