【RenderTexture】

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

屏幕截图主要步骤:

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

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

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

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

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

即:Image::Format::PNGImage::Format::JPG

第一种截图方法:

1、截图方法

 

//
void HelloWorld::capture(Ref* sender)
{CCLOG("ScreenShot");//获取屏幕尺寸大小Size winSize = CCDirector::sharedDirector()->getWinSize();//创建RenderTexture,纹理图片大小为窗口大小winSizeRenderTexture* 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<void(bool, const std::string&)>& 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"

转载于:https://www.cnblogs.com/luorende/p/6063951.html

cocos2dx 3.x(屏幕截图的两种方法)相关推荐

  1. cocos2dx 3.x 屏幕截图的两种方法及其优缺点

    第一种方法:用RenderTexture实现截图功能 在cocos2dx 3.2之前,引擎没有提供截图功能,我们可以用RenderTexture来实现截图功能,这个方法在cocos2dx 3.2之后也 ...

  2. Cocos2d-x 处理双击事件的两种方法

    在cocos2d-x的开发过程中有些时候也是需要用到双击的事件处理,那么由于在cocos2d-x中没有实现对双击的事件的处理,那么我们就需要自己用代码实现. 下面介绍两种方式实现双击事件的处理. (一 ...

  3. C++ 区分中文,非中文,截取含有中文的string字符串的两种方法

    C++ 区分中文,非中文,截取含有中文的string字符串的两种方法 方法一 根据中文在ASCII中的范围判断 方法二 把string转成wstring 转自: http://blog.51cto.c ...

  4. SQL Server中灾难时备份结尾日志(Tail of log)的两种方法

    简介 在数据库数据文件因各种原因发生损坏时,如果日志文件没有损坏.可以通过备份结尾日志(Tail of log)使得数据库可以恢复到灾难发生时的状态. 例如: 上图中.在DB_1中做了完整备份,在Lo ...

  5. C++/C++11中用于定义类型别名的两种方法:typedef和using

    类型别名(type alias)是一个名字,它是某种类型的同义词.使用类型别名有很多好处,它让复杂的类型名字变得简单明了.易于理解和使用,还有助于程序员清楚地知道使用该类型的真实目的.在C++中,任何 ...

  6. jquery-12 折叠面板如何实现(两种方法)

    jquery-12 折叠面板如何实现(两种方法) 一.总结 一句话总结:1.根据点击次数来判断显示还是隐藏,用data方法保证每个元素一个点击次数:2.找到元素的下一个,然后toggle实现显示隐藏. ...

  7. java 匿名list,java创造匿名对象的两种方法

    在java中有时候需要一些匿名对象的使用.可能有些小伙伴拿还不会创造,其实我们在学习一些方法时都或多或少的接触过.本篇所要讲到的创造匿名对象总结了两种方法,分别是静态工具方法和Lambda表达式,我们 ...

  8. Android Studio导入Eclipse项目的两种方法

    Android Studio导入Eclipse项目有两种方法,一种是直接把Eclipse项目导入Android Studio,另一种是在Eclipse项目里面进行转换,然后再导入Android Stu ...

  9. Response.Redirect 打开新窗体的两种方法

    普通情况下,Response.Redirect 方法是在server端进行转向,因此,除非使用 Response.Write("<script>window.location=' ...

最新文章

  1. QueryPerformanceFrequency用法--Windows高精度定时计数
  2. JavaScript实现radianToDegree弧度到度算法(附完整源码)
  3. 置信学习:让样本中的“脏数据“原形毕露
  4. 面试必谈的哈希,.Net 程序员温故而知新
  5. python如何向字典添加新键?
  6. 在Ubuntu下rtorrent编译安装笔记
  7. 中国老工业基地吉林对外贸易重回历史高水平
  8. 定制10kV变压器感应雷直击雷击变压器加避雷器atp-emtp模型
  9. 远程工具显示Linux乱码问题解决方案
  10. 矢量地图自定义切片样式
  11. Windows系统常用网络命令详解及命令示例(全)
  12. 开发部程序员绩效考核办法
  13. 技术类—Java笔试题2018
  14. 猿创征文|智能合约开发效率工具
  15. 家用摄像机告知你“第三只眼睛”的重要性
  16. h5调起QQ客服的坑(PC端、移动端)
  17. 0基础学习pythonTASK6——If 、For、While语句
  18. 从零开始的数模(二十)变异系数法
  19. 第一节 安卓自定义轮播图的制作
  20. 班级小工具二【随机抽取同学】

热门文章

  1. 前端自动化测试工具:SlimerJS、phantomJS 和 CasperJS
  2. 协议(Protocol)与委托代理(Delegate)
  3. NEC学习 ---- 模块 - 带点文字链接列表
  4. Spring Thread Pool 线程池的应用
  5. linux杂七杂八整理
  6. android调节音量——AudioManager的应用
  7. 根文件系统构建(Yocto方式)
  8. 目录同步 linux,Linux系统目录实时同步
  9. linux编译准备,Linux 下编译指南
  10. mysql读锁和写锁