【RenderTexture】this
RenderTexture這個動態紋理類,顧名思義就是能夠動態建立紋理圖片。orm
屏幕截圖主要步驟:blog
> 開始截圖:render->begin();圖片
> 遍歷場景:scene->visit();get
> 結束截圖:render->end();string
> 保存截圖:render->saveToFile(string& filename, Image::Format format);it
其中Image::Format爲圖片格式,能夠保存爲PNG、或JPG兩種格式。io
即:Image::Format::PNG、Image::Format::JPG。function
第一種截圖方法:form
一、截圖方法
// 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格式 } //
二、保存路徑
> Win32 :保存在 Debug.win32/ 目錄下。
> Android:保存在 /data/data/com.summer.hello/files/ScreenShot.png 。
=================================================================
第二種截圖方法;
【utils::captureScreen】
在v3.2版本,utils::captureScreen()方法被加入用於保存屏幕截圖。
一、定義
// // > afterCaptured :該方法將在捕捉指令後被執行。 // > bool : 捕捉屏幕截圖是否成功。 // > string : 截圖存儲的路徑。 // > filename :截圖的名字。 // > 能夠只是一個文件名。 像這樣ScreenShot.png。 // > 也能夠是一個絕對路徑。像這樣/sdcard/ScreenShot.png。 void captureScreen(const std::function<void(bool, const std::string&)>& afterCaptured, const std::string& filename) //
二、截圖方法
// //屏幕截圖 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."); } } //
三、保存路徑
filename能夠只是一個文件名(保存到相對路徑):像這樣 "ScreenShot.png"。
filename也能夠是一個絕對路徑 :像這樣 "/sdcard/ScreenShot.png"。