【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<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"。
本文介绍了在cocos2dx 3.x中进行屏幕截图的两种方法。首先使用RenderTexture,通过begin(), visit(), end()及saveToFile()保存为PNG或JPG格式。在Win32环境下截图保存于Debug.win32目录,Android则保存于/data/data/com.summer.hello/files/ScreenShot.png。另一种方法是利用utils::captureScreen(),该方法在v3.2版本引入,可以指定相对或绝对路径保存截图,如"ScreenShot.png"或"/sdcard/ScreenShot.png"。"
110077100,10295018,Python 文件操作:从创建目录到读写文件与压缩解压,"['Python', '文件操作', '目录操作', '文件读写', '压缩解压']
2190

被折叠的 条评论
为什么被折叠?



