cocos2dx[3.2](18)――屏幕截图ScreenShot
【唠叨】 屏幕截图有两种方式: (1)使用RenderTexture :这是在2.x版本时最常用的的截图方法。 (2)使用utils::captureScreen() :在3.2版本中新增的截图方法。 【致谢】 http://www.52php.cn/article/p-psfsykkj-bch.html 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,纹理图片大小为窗口大小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。 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"); } //截图后执行afterCapture voidHelloWorld::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"。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |