屏幕截图ScreenShot方法总结

比较Cocos2d-x 2.x版本与3.x版本屏幕截图的两种方式:

(1)使用RenderTexture:这是在2.x版本时最常用的的截图方法。

(2)使用utils::captureScreen() :在3.2版本中新增的截图方法。

RenderTexture

RenderTexture这个动态纹理类,顾名思义就是可以动态创建纹理图片。

屏幕截图主要步骤:

开始截图:render->begin();

遍历场景:scene->visit();

结束截图:render->end();

保存截图:render->saveToFile(string& filename, Image::Format format);

其中Image::Format为图片格式,可以保存为PNG、或JPG两种格式。即:Image::Format::PNG、Image::Format::JPG。

1、截图方法

void HelloWorld::capture(Ref* sender)

{

CCLOG(“ScreenShot”);

//获取屏幕尺寸大小

Size winSize = CCDirector::sharedDirector()->getWinSize();

//创建RenderTexture,纹理图片大小为窗口大小winSize

RenderTexture* screen = RenderTexture::create(winSize.width, winSize.height);

//屏幕截图

screen->begin();            //开始抓屏

this->getParent()->visit(); //遍历当前场景Scene的所有子节点信息,画入screen中

screen->end();              //结束抓屏

//保存截图

screen->saveToFile(“ScreenShot.png”, Image::Format::PNG); //保存为PNG格式

//screen->saveToFile(“ScreenShot.jpg”, Image::Format::JPG); //保存为JPG格式

}

2、保存路径

Win32:保存在 Debug.win32/ 目录下。

Android:保存在 /data/data/com.summer.hello/files/ScreenShot.png 。

utils::captureScreen

在v3.2版本,utils::captureScreen()方法被加入用于保存屏幕截图。

1、定义

// afterCaptured:该方法将在捕捉指令后被执行。

// bool: 捕捉屏幕截图是否成功。

// string: 截图存储的路径。

// filename:截图的名字。

// 可以只是一个文件名。像这样ScreenShot.png。

// 也可以是一个绝对路径。像这样/sdcard/ScreenShot.png。

void captureScreen(const std::function& afterCaptured, const std::string& filename)

2、截图方法

//屏幕截图

void HelloWorld::capture(Ref* sender)

{

CCLOG(“ScreenShot”);

utils::captureScreen(CC_CALLBACK_2(HelloWorld::afterCapture, this), “ScreenShot.png”);

}

//截图后执行afterCapture

void HelloWorld::afterCapture(bool succeed, const std::string& outputFile)

{

if (succeed)

{

CCLOG(“%s”, outputFile.c_str());

//显示截图

Sprite* sp = Sprite::create(outputFile);

sp->setPosition(winSize / 2);

this->addChild(sp);

sp->setScale(0.25); //放缩

}

else

{

CCLOG(“Capture screen failed.”);

}

}

3、保存路径

filename可以只是一个文件名(保存到相对路径):像这样 “ScreenShot.png”。

filename也可以是一个绝对路径:像这样 “/sdcard/ScreenShot.png”。

分享屏幕截图ScreenShot方法总结相关推荐

  1. 百度网盘Mac版如何分享链接?创建百度网盘 for Mac分享链接的方法

    想把自己百度网盘里的数据分享给朋友,该怎么操作呢?有很多朋友使用百度网盘,可以很轻松的自己的文件上传到网盘上,并可跨终端随时随地查看和分享.今天给大家分享的是创建百度网盘 for Mac分享链接的方法 ...

  2. 使用美图秀秀制作电子喜帖:分享幸福新方法

    使用美图秀秀制作电子喜帖:分享幸福新方法 不知不觉我们都长大了,毕业了.工作了,要结婚了......随着我们的成长,亲朋好友也都遍布各地.那么,如何将结婚喜帖送达他们手上是个难题:邮寄传统的纸质喜帖很 ...

  3. 大家分享——恢复视力方法

    <script type="text/javascript"> </script> <script src="http://pagead2. ...

  4. 关于泡泡龙游戏的一点儿总结,以及分享一个好方法

    嗨,大家好,我是小蚂蚁. 不少人都问过这样的一个问题:你做一个游戏需要多长时间?通常我的回答都是:不好说,看情况. 游戏是一种虚拟的产品,它很难被量化,也很难像工厂流水线生产实体产品一样的去生产.因为 ...

  5. 如何给电脑文件加密?分享四种方法!

    想要给文件设置加密,防止他人查看自己的文件,分享四种方法给电脑文件加密. 一:隐藏文件 如果不想给文件设置密码,我们可以将文件隐藏起来,这样设置之后,文件就不会再显示在文件夹里了,想要隐藏文件,我们只 ...

  6. php实现微信公众号分享,php实现微信公众号自定义分享内容的方法

    这篇文章主要介绍了php版微信公众号自定义分享内容实现方法,结合实例形式分析了php实现微信公众号自定义分享内容的接口调用与相关使用技巧,需要的朋友可以参考下 微信公众号号在手机中通过api接口可以实 ...

  7. 百度网盘Mac版如何生成链接分享和密码?Mac版创建百度网盘分享链接的方法

    想把自己百度网盘里的数据分享给朋友,该怎么操作呢?有很多朋友使用百度网盘,可以很轻松的自己的文件上传到网盘上,并可跨终端随时随地查看和分享.下面Mac down小编就给大家介绍一下创建百度网盘 for ...

  8. u盘删除的文件怎么找回?分享5种方法恢复数据

    u盘小小一个,非常方便携带,能保存很多文件数据,很适合日常生活和工作中使用.但是在使用过程中,由于各种原因,我们有时会不小心把数据给删除了,或者把不需要的文件定期删除.这时会产生一个问题,u盘删除的文 ...

  9. php实现微信公众号分享,php版微信公众号自定义分享内容实现方法

    搜索热词 PHP版微信公众号自定义分享内容实现方法,希望对您有用.如果有疑问,可以联系我们. PHP版微信公众号自定义分享内容实现方法.分享给大家供大家参考,具体如下: 自定义分享内容了,下面我们来看 ...

最新文章

  1. python async await报错_Python 3.7.7 发布 支持async并await现在为保留关键字
  2. 在使用Reference Source调试.Net 源代码时如何取消optimizations(代码优化)-翻译
  3. Vuex 2.0 源码分析
  4. 新博客地址: https://sanzo.top
  5. kotlin学习之类的扩展(四)
  6. uml活动图 各个功能的操作流程和分支_UML建模之活动图介绍(Activity Diagram)
  7. 计算机专业可以评机械工程师,机械工程师个人评价
  8. leetcode 275. H 指数 II
  9. Go实现查找目录下(包括子目录)替换文件内容
  10. Rabbit MQ 延迟插件rabbitmq_delayed_message_exchange的安装
  11. 文件管理之文件后缀名识别
  12. 方维短信接口常见的问题汇总
  13. 亚里士多德对于知识的分类
  14. 数据结构与算法分析(十七)--- 怎么用回溯剪枝高效穷举所有可行解?
  15. PAT 1007(简单粗暴)
  16. 神州优车粗暴裁员:人与人之间最起码的尊重呢?
  17. PhysX官方手册翻译(Dynamics)
  18. PHP中打印九九乘法表
  19. mysql表id的数据类型是_MySQL表中的数据类型
  20. KCF核相关滤波跟踪

热门文章

  1. win10桌面图标变白
  2. 一个用 Chromium 能玩 Flash 游戏的方法
  3. kendoUI之combobox下拉列表框
  4. 最最最最基本的服务器网站维护防御攻略
  5. MATLAB 分析FIR 滤波器的相位特性和幅度特性
  6. EF框架实现增删改查
  7. Java开源OA系统 J.Office
  8. 从时频特性出发——什么是循环卷积?
  9. 史上最全Pandas 教程!
  10. 检索COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败,错误: 80080005