【问题标题】:Is there a way to capture a view and save it?有没有办法捕获视图并保存它?
【发布时间】:2019-12-17 06:15:50
【问题描述】:

我们在 ContentPage 中有很多元素。目标是拍摄特定元素的照片,然后可以访问该数据 - 保存它或可能进行其他操作,例如裁剪它。

所以这个问题是双重的 - 有没有办法以摄影方式捕捉给定的元素?如果元素没有完全在视图中,有没有办法做到这一点?示例 ScrollView 可能有一些当前不在视图中的元素。

我们在这方面的尝试是使用特定于设备的屏幕截图并将它们裁剪为给定的元素。屏幕截图可以正常工作,但我们在裁剪方面没有运气。更不用说在上述情况下,由于视图不完全可见,因此屏幕截图将不起作用。

有没有办法在给定时间获取元素的“图形”(照片)数据,即使它当前不可见/部分可见?

感谢您提前阅读。

【问题讨论】:

  • 您为什么要尝试通过屏幕截图访问数据?这是某种形式的桌面自动化吗?操纵第三方程序?
  • 查看 thisthis 文章,以及现有的 SO thread
  • 您为什么要截取应用程序的屏幕截图?如果您控制应用程序,只需将实际数据(而不是 UI 中数据的屏幕截图)存储到您的任何后端。屏幕截图不是获取数据的合适方式。它甚至不太适合用于记录/存储输入。 |如果您想在编辑帖子时在此处创建帖子历史记录,您会 a) 制作旧帖子的图像还是 b) 将旧帖子(包括所有数据)存储到一个特殊的“先前修订”表中?提示:B 是每个人都会选择的。
  • 如果这不是您的应用程序,但您仍想截屏以“获取数据”,那么您实际上在谈论的是桌面自动化。 |关于你的问题的一切——包括你拒绝向我们解释原因——听起来就像你陷入了一个 XY 问题。截图是你的 Y。但你的 X 是什么?
  • 还是很奇怪。 1.如果你想以可视化的方式共享数据,你通常会发送数据,然后有一个 UI 来显示它。或者只是在单独的计算机上运行相同/相似的 UI,访问相同的数据源(可能是 Databsae)。 2. 对于像教程这样的罕见情况,您可以使用 Windows 截图或屏幕截图和手动裁剪手动完成屏幕截图。 3. 现场教你远程桌面在仅查看模式或投影仪。 |你试图做的是一个 XY 问题,一个愚蠢的糟糕的法律要求,或者你发现了我现在无法想象的第四个案例。

标签: c# xamarin xamarin.forms


【解决方案1】:

聊了很多,这就是我的理解

  1. 您的应用程序的用户是您公司的员工
  2. 该应用程序用于管理贵公司客户的帐户
  3. 客户无权访问任何形式或形式的数据
  4. 部分客户数据是他们的电子邮件地址
  5. 您想将其数据的副本发送给客户
  6. 由于电子邮件不能很好地格式化,您希望将该数据作为 UI 的屏幕截图发送。

如果我做对了:

你在XY Problem 中深陷其中。或者更确切地说是 ((XY)Y)Y 问题 - 3rd Generation 的 XY 问题。

显而易见的解决方案是修复第 3 点并让您的客户已经可以访问他们的数据

您可以通过额外的程序、应用程序、网页或任何类似的东西来做到这一点。如果他们可以接收电子邮件,他们可以下载应用程序或打开网页并在那里查看他们的数据。可能需要登录,但没什么特别的。甚至有一些方法可以将数据/直接链接编码到电子邮件中,并使用自定义格式注册您的程序。事实上,这就是桌面版 Steam 链接的工作方式。

同时,内部用户获得一个“客户管理”程序,允许更直接地访问数据库中的客户数据(我假设您有一个后端数据库。但至少有可能您没有)。

如果你因为愚蠢的老板/法律原因无法修复选项 3(这是我能想象的唯一有效理由。而且我不能强调老板在这方面会多么愚蠢),你至少应该是能够在第 5/6 点修复:

第一个选项是发送文本电子邮件。人们经常低估纯文本的可能性。这基本上就像在控制台上写字一样,但即使这样也足以制作Art in it

其他方法涉及管理 HTML 限制:

  1. 保存 HTML 邮件

HTML 邮件的主要安全问题是“下载外部内容”部分。病毒扫描程序等无法可靠地扫描这些操作 - 特别是在 HTTPS 时代。除非我们谈论卡巴斯基和stupid Idea they had

即使它们可以被可靠地扫描,即使只是这些文件的请求也可以用于垃圾邮件发件人来验证电子邮件地址是否仍在使用中。所以这也是不行的。

所以你需要尽可能地内联。内联图像是不可能的。虽然 HTML 完全有一个标准 - 你 Base64 将二进制编码为 HTML - 这不能可靠地工作。至少已知 Microsoft Outlook 会将电子邮件中的所有 Base64 图像解释为附件 - 甚至是内联的图像。即使他们解决了这个问题或者它不再是一个相关问题,内联图像往往会显着增加 HTML 大小。

您可以在某种程度上使用 CSS。但除了内联它之外,您可能还需要后退一两步。归根结底,电子邮件程序真的是很弱的网络浏览器。所以他们不一定立即支持所有最新的东西。任何低于 CSS 3.0 的东西现在都应该可靠地工作。但是,一旦您对这封电子邮件有更具体的要求,您最好问问别人。

  1. PDF 附件

比较成熟的是创建一个 .PDF 文件并发送它。您获得的所有这些 .PDF 格式的账单/其他东西 - 这些都是根据需要从数据库创建的,由发送电子邮件的相同代码创建。在许多情况下,需求也是自动化的,或者发送程序是一个彻底的后台进程。

.PDF 允许您想要的所有格式。它可以内嵌图像。并且有很多方法可以从代码创建 .PDF。由于您可以将其作为附件发送,因此病毒扫描程序有时间检查它。而且我们不是在最后一个千年,PDF 阅读器是一个不常见的程序安装(我仍然记得当前版本的 Acrobat PDf 阅读器在每张带有 .PDF 格式手册的 CD 上交付的时代)。

如果您对整个“制作 UI 图像以发送它”仍然很认真,我唯一的问题是:为此花费了多少年?

【讨论】:

    猜你喜欢
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多