当前位置: 首页 > 面试题库 >

ios Sprite Kit屏幕截图?

慕容宏邈
2023-03-14
问题内容

我正在尝试获取包含SKScene的视图的屏幕抓图。我使用的技术是:

UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, scale);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

这对于普通的UIViews效果很好,但是无论出于何种原因,它都忽略了SKScene中的所有精灵。

我不确定这是否是错误,或者Sprite Kit的渲染是否与UIGraphics分开。

问题:当适用于UIViews的方式似乎不适用于Sprite Kit或有人成功将UIGraphics上下文与Sprite
Kit结合使用时,如何获得SKScene的屏幕截图?


问题答案:

您几乎拥有它,但是问题如上面的注释所述。如果要捕获SKScene内容,请尝试以下类似方法:

UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, scale);
[self.view drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

解决方案是基本上改用新方法drawViewHierarchyInRect:afterScreenUpdates,这是我们目前拥有的最好方法。请注意,这并不是完全快速的,因此实时执行此操作并不容易。



 类似资料:
  • 在Linux下有很多屏幕载图的工具,下面简单介绍一下: 在GNOME桌面中自带了一个屏幕截图工具,位于“动作”栏内。该工具功能很少,只能截取当前屏幕。 在GMIP中也可截图,在“文件”--“获取”菜单下有一个“屏幕抓图”选项可进行屏幕截图。它可截取任意图窗口的内容,并自动输入到GMIP中,我们可方便地进行处理和保存。 安装ImageMagick软件,它有一个工具叫import可用于屏幕截图。该工具

  • 点击按钮进行截屏,可以将截屏图像保存到相册中。 作者说:听说会和苹果的策略有冲突,应用如果上架可能会被拒绝。这个估计是看人品了吧。经过测试发现,如果先弹出对话框,然后再截屏,似乎并不能把对话框也给保存下来。 [Code4App.com]

  • 我试图根据用户输入的坐标捕捉区域截图。基本上,用户在屏幕上点击得到x,y坐标,然后在其他地方点击另一对x,y坐标,然后将其放入一个矩形中,并使用机器人库创建屏幕截图。 我有的问题是,我得到了随机截图,这不是用户输入的坐标,我怎么能考虑包括0的坐标,因为矩形值必须超过1。 以下是我迄今为止的代码:

  • 我在使用html2canvas。js库,用于与selenium一起拍摄全页屏幕截图。 我保存了html2canvas。我的java项目的类路径中的js文件。我用来获取屏幕截图的java脚本代码是: 我能够捕获flipkart页面的全页屏幕截图,但其中没有任何图像。 我无法使用Chrome的TakeScreenshot实用程序,因为它不允许使用Chrome浏览器拍摄整页屏幕截图。

  • 原文:Screenshots 这里你会找到一些示例图和生成它们的代码。 简单绘图 这里是一个带有文本标签的基本的绘图: 源代码 子图示例 多个轴域(例如子图)可使用subplot()命令创建: 源代码 直方图 hist()命令自动生成直方图,并返回项数或者概率: 源代码 路径示例 你可以使用matplotlib.path模块,在maplotlib中添加任意路径: 源代码 mplot3d mplot

  • 我正在使用Selenium和Chrome驱动程序来拍摄一个站点的屏幕截图,并将窗口尺寸设置为800x600。当我看到.png时,它比这个值更大,并且每个屏幕分辨率都有变化。差异大于滚动条,将其设置为捕获800x600,它将产生1179x704图像(我的监视器res是3840 x 2160)。这也会根据监视器上的分辨率而改变。有没有一种方法可以设置它,这样无论屏幕分辨率是多少,输出都是一样的? 我试