【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,纹理图片大小为窗口大小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<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"

最新文章

  1. 查找Linux中内存和CPU使用率最高的进程
  2. sql存储过程异常捕获并输出例子还有不输出过程里面判断异常 例子
  3. Android 获取地理位置的经度和纬度(zz)
  4. RSA非对称加密 php的openssl实现
  5. windows下,python+scrapy环境搭建
  6. CSS-Sprite-Generator丨CSS雪碧在线生成器
  7. 当今app行业 比较流行的 简称 汇总
  8. Windows环境搭建Web自动化测试框架Watir
  9. 360春秋杯CTF比赛WRIteUP
  10. ThreadLocal 原理解析
  11. Linux: yum配置说明
  12. hive字符函数
  13. [C程序设计基础]快速排序
  14. cookie session 讲解
  15. 如何在Windows命令行(DOS界面)中调用 编译器 来编译C/C++源程序
  16. SSH框架开发蛋糕房管理系统之质量属性
  17. nginx实现动静分离--附nginx配置文件详解
  18. 【SPOJ - LCS2】Longest Common Substring II【SAM】
  19. php手机号正则
  20. Python RabbitMQ 消息队列

热门文章

  1. Android Intent (可通过URL启动 Activity)
  2. 关于jQuery的inArray 方法介绍
  3. 【noiOJ】p6253
  4. BZOJ4521: [Cqoi2016]手机号码
  5. GO语言练习:值与引用
  6. NodeJS学习笔记之Connect中间件模块(一)
  7. Node.js的DES加解密和MD5加密
  8. Java生成动态GIF图片
  9. wego微购RSS、Sitemap、Ping、腾讯拍拍网购采集插件
  10. 从就业面分析web前端开发工程师就业前景(2011.6)