cocos2dx[3.2](18)——屏幕截图ScreenShot
【唠叨】
屏幕截图有两种方式:
(1)使用RenderTexture :这是在2.x版本时最常用的的截图方法。
(2)使用utils::captureScreen() :在3.2版本中新增的截图方法。
【致谢】
http://blog.csdn.net/ganpengjin1/article/details/19088921
http://cn.cocos2d-x.org/article/index?type=wiki&url=/doc/cocos-docs-master/manual/framework/native/wiki/how-to-save-a-screenshot/zh.md
【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、截图方法
//voidHelloWorld::capture(Ref*sender){CCLOG("ScreenShot");//获取屏幕尺寸大小SizewinSize=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。voidcaptureScreen(conststd::function<void(bool,conststd::string&)>&afterCaptured,conststd::string&filename)//
2、截图方法
////屏幕截图voidHelloWorld::capture(Ref*sender){CCLOG("ScreenShot");utils::captureScreen(CC_CALLBACK_2(HelloWorld::afterCapture,this),"ScreenShot.png");}//截图后执行afterCapturevoidHelloWorld::afterCapture(boolsucceed,conststd::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("Capturescreenfailed.");}}//
3、保存路径
filename可以只是一个文件名(保存到相对路径):像这样 "ScreenShot.png"。
filename也可以是一个绝对路径 :像这样 "/sdcard/ScreenShot.png"。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。