Xamarin.Forms.View的快照

时间:2015-04-28 18:23:20

标签: android bitmap xamarin xamarin.ios xamarin.forms

我正在使用Xamarin.Forms创建一个应用程序,我需要创建一个视图的快照(包括当前不可见的部分)。我完全知道如何在Android上做到这一点,但我还没有找到任何关于如何使用Xamarin.Forms.View做到这一点的线索。 有没有办法做到这一点?

我无法在android中编写代码,因为带有所有视图引用的项目是一个xamarin表单项目,但是如果有一些xamarin技巧从.droid项目中的类中获取位图也会非常有帮助!

我不知道这是否相关,但我使用自定义渲染器安装android,如果有办法通过它的渲染器与视图进行通信,那么知道它会很有帮助。

提前致谢!

1 个答案:

答案 0 :(得分:1)

您正在寻找服务。有几种方法可以创建服务。一种方法是使用DependencyService。从那篇文章中可能不清楚的是你需要在你的类中命名空间之前放置[assembly:Xamarin.Forms.Dependency ...]属性

使用xyz ... [组件:Xamarin.Forms.Dependency ...] 公共类MyService:IMyInterface {...}

然后使用

获取对本机代码的引用

DependencyService.Get()

另一种方法是使用Resolver - 基本上是相同的,但注册并不依赖于属性。

然后,您的服务需要找到对本机视图的引用,以便能够将其呈现为位图。这里有很多选项:你可以看到Forms是如何做到的但它们可能会改变它,或者你可以简单地跟踪你自己的自定义视图和它们的渲染器以及它适合你的方式(Forms类的自定义对象属性,全局注册表) ...)。完成后,您将拥有本机服务以及需要传递给它的对象,它可以返回流或图像,或者只保存到文件中 - 也取决于您的需求。