cocos2d-x 截取屏幕可见区域

在游戏中,我们经常需要分享到社交网络的功能。分享时,我们时常会需要用到截屏的功能。目前网上的文章虽然很多,但是都是截取的

设计分辨率(DesignResolutionSize)大小的屏幕,而这个并不是最佳选择,因为它不符合当前设备的宽高比例。


下面的这个函数,可以截取屏幕可见范围的内容,生成一个CCImage对象。

CCImage* screenshotWithStartNode(CCNode *startNode)

{

    CCSize winSize = CCDirector::sharedDirector()->getWinSize();

    CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();

    CCPoint visibleOrigin = CCDirector::sharedDirector()->getVisibleOrigin();

    

    CCDirector::sharedDirector()->setNextDeltaTimeZero(true);

    

    CCRenderTexture* rtx = CCRenderTexture::create(winSize.width, winSize.height);

    rtx->begin();

    startNode->visit();

    rtx->end();

    

    if (0 == visibleOrigin.x)

        return rtx->newCCImage();

    

    CCRect finalRect = CCRectMake(visibleOrigin.x, visibleOrigin.y, visibleSize.width, visibleSize.height);

    CCSprite *sprite = CCSprite::createWithTexture(rtx->getSprite()->getTexture(), finalRect);

    sprite->setAnchorPoint(CCPoint(0, 0));

    sprite->setFlipY(true);

    

    CCRenderTexture *finalRtx = CCRenderTexture::create(visibleSize.width, visibleSize.height);

    finalRtx->begin();

    sprite->visit();

    finalRtx->end();

    

    return finalRtx->newCCImage();

}


 

转载于:https://www.cnblogs.com/riasky/p/3481852.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值