- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
要求是这样的:
我必须发出一个命令来请求屏幕截图。扭曲?该命令指定了一个时间——而那个时间已经过去了。请注意,不是永远,只是在 30 秒的窗口内。
我的命令指示实际秒数,相应的屏幕截图从滚动缓存中提取并保存在另一个进程的永久位置。
为此,我必须每秒截屏一次,并且必须将它们保存 30 秒。之后缓存可以自行清除。
我的问题是
哪种屏幕截图方法对桌面的影响最小?
最佳答案
我无法想象每秒一帧对于性能来说会很糟糕。您是否尝试过最简单的方法来查看它是否会影响性能?
看看http://www.dotnetjalps.com/2007/06/how-to-take-screenshot-in-c.html有关如何获取屏幕截图的信息。
我建议您使用计时器:
var ssTimer = new System.Threading.Timer((s) =>
{
GetAndStoreScreenShot();
}, null, 1000, 1000);
您需要在缓存上进行一些同步以防止线程问题(即尝试读取缓存中的第一项,同时它被推出)。可能最容易使用锁,因为这不会对性能特别敏感。
至于缓存用什么,我建议使用LinkedList
。很容易追加到列表 (AddLast()
) 并删除第一项 (RemoveFirst()
),因为您只有 30 个,并且请求屏幕截图相对较少,顺序扫描以获取第 n 个项目不会太耗时。
或者您可以使用List
或Array
实现一个简单的循环缓冲区。增加一个索引作为插入点,当你增加结束时环绕。然后查找就变成了一个简单的模运算问题。
关于c# - 如何在不影响性能的情况下不断截取屏幕截图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7424060/
如果这不是一个错误,那就是另一个错误。如果不是那样的话,那就是别的东西了。我觉得我的项目已经改变了很多,现在只是试图解决代码签名问题,结果一切都搞砸了。我严格按照说明进行操作,但出现错误,例如当前的“
我不确定是否有一些我不知道的内置变量或规则,或者 make 是否有问题,或者我只是疯了。 对于我的一个项目,我有一个如下的 makefile: CC=g++ CFLAGS=-O3 `libpng-co
我有大约 10 个 div,它们必须不断翻转,每个 div 延迟 3 秒 这个 codrops 链接的最后一个效果是我正在寻找的,但无需单击 div http://tympanus.net/Devel
我如何使用 jQuery 持续运行 PHP 脚本并每秒获取响应,以及将鼠标上的少量数据发送到同一脚本? 我真的必须添加一些随机扩展才能让这么简单的计时器工作吗? 最佳答案 To iterate is
JBoss 4.x EJB 3.0 我见过如下代码(大大简化): @Stateless @TransactionAttribute(TransactionAttributeType.NOT_SUPPO
使用 PHPStorm,我试图忽略每次尝试进行 git 提交时 pop 的 workspace.xml。 我的 .gitignore 看起来像: /.idea/ .idea/workspace.xml
我是一名优秀的程序员,十分优秀!