如何在我的共享代码中调用依赖注入屏幕截图代码?
问题描述:
我是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;
}
}
答
如果您需要的是让图像从一个byte []拍摄的,正如我们在讨论的意见,所以你应该做的@Jason说。
事情是这样的:
var imageBytes = await screenshotManager.CaptureAsync();
Image imageView = new Image();
imageView.Source = ImageSource.FromStream(() => new MemoryStream(imageBytes));
你阅读文档? https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/dependency-service/introduction/ – Jason
我试图把这段代码放入一个单击事件中,但什么也没发生 DependencyService.Get()。 CaptureAsync(); –
你注册了你的实现吗? '[assembly:Xamarin.Forms.Dependency(typeof(screenshotManager))]'as [docs asked to](https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/dependency-service/introduction/) #注册)? –