cocos2dx 3.x(屏幕截图的两种方法)

【RenderTexture】

    RenderTexture这个动态纹理类,顾名思义就是可以动态创建纹理图片。

    屏幕截图主要步骤:

        > 开始截图:render->begin();

        > 遍历场景:scene->visit();

        > 结束截图:render->end();

        > 保存截图:render->saveToFile(string& filename, Image::Format format);

    其中Image::Format为图片格式,可以保存为PNG、或JPG两种格式。

    即:Image::Format::PNGImage::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"

 

 

 

转载于:https://www.cnblogs.com/luorende/p/6063951.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值