//屏幕捕捉 方法一
void HelloWorld::capture_1(Ref* pSender)
{
Size winSize = Director::sharedDirector()->getWinSize();
//创建RenderTexture,纹理图片大小为窗口大小winSize
RenderTexture* screen = RenderTexture::create(winSize.width, winSize.height);
Scene* runningScene = Director::sharedDirector()->getRunningScene();
//遍历开始--->结束 遍历当前场景Scene的所有子节点信息,画入screen中
screen->begin();
runningScene->visit();
screen->end();
//保存截图 并将其类型设置为 png 格式
screen->saveToFile("ScreenShot1.png", Image::Format::PNG);
}
默认保存在工程的 Debug.win32 文件加下
//屏幕捕捉 方法二
void HelloWorld::capture_2(Ref* pSender)
{
utils::captureScreen(CC_CALLBACK_2(HelloWorld::afterCapture, this),"D:/cocos2dx32/workspace/ForTest/Resources/ScreenShot2.jpg");
}
void HelloWorld::afterCapture(bool succeed, const std::string& outputFile)
{
CCSize winSize = Director::sharedDirector()->getWinSize();
if (succeed)
{
CCLog("path = %s", outputFile.c_str());
//显示截图
Sprite* sp = Sprite::create(outputFile);
sp->setPosition(winSize/2);
sp->setScale(0.5f);
sp->setRotation(60.f);
this->addChild(sp);
}
else
{
CCLog("Capture2 screen failed !!!");
}
}
保存路径:
1、直接填写 ScreenShot.png 则会保存在默认的 Debug.win32 文件夹下
2、可以如上述文件中所写 填写一个指定路径,这样图片就会保存在该路径下
需要说明的是:如果你按照 D:\cocos2dx32\workspace\ForTest\Resources\ScreenShot2.jpg 这种方式传入路径,那么你的图片将会存在这个路径下,但是他的名字将会是 cocos2dx32workspaceForTestResourcesScreenShot2.jpg ,这点需要 注意 反斜杠(\)问题。
截图请到相应的路径下去查看:
显示效果: