cocos2d-x实现简易屏幕截图功能
来源:互联网 发布:java实训日志道客巴巴 编辑:程序博客网 时间:2024/04/27 13:47
在cocos2d-x开发包的test程序中有了截屏的例子,根据这个再加了一点内容:可以随意截取屏幕的某个部分,之后保存图片,两种格式,图片也能显示在屏幕。
http://download.csdn.net/detail/xexiyong/5720369
void HelloWorld::ccTouchesBegan(CCSet* pTouches, CCEvent* pEvent) {CCSetIterator kIterator = pTouches->begin();CCTouch* pTouch = (CCTouch*)(*kIterator);//按下触屏时记录开始触屏点m_kBeginPos = pTouch->locationInView( pTouch->view() );m_kBeginPos = CCDirector::sharedDirector()->convertToGL( m_kBeginPos );}
记录开始触屏的点,然后,记录离开触屏的点,经过计算:
void HelloWorld::ccTouchesEnded(CCSet* pTouches,CCEvent* pEvent){CCSetIterator kIterator = pTouches->begin();CCTouch* pTouch = (CCTouch*)(*kIterator);m_kEndPos = pTouch->locationInView( pTouch->view() );m_kEndPos = CCDirector::sharedDirector()->convertToGL( m_kEndPos );//针对开始点与结束点的计算,得到定制的矩形CRectMake(m_kBeginPos,m_kEndPos);CCSize size = CCDirector::sharedDirector()->getWinSize();//定义一个屏幕大小的渲染纹理CCRenderTexture* pScreen = CCRenderTexture::renderTextureWithWidthAndHeight(size.width,size.height);//获得当前的场景指针CCScene* pCurScene = CCDirector::sharedDirector()->getRunningScene();//渲染纹理开始捕捉pScreen->begin();//当前场景参与绘制pCurScene->visit();//结束捕捉pScreen->end(false);//保存为png(经过裁切的)pScreen->saveBuffer(kCCImageFormatPNG, "Print.png",m_kRect.origin.x, m_kRect.origin.y,m_kRect.size.width, m_kRect.size.height);//保存为jpg,经过裁切的pScreen->saveBuffer(kCCImageFormatJPG,"Print.jpg",m_kRect.origin.x, m_kRect.origin.y,m_kRect.size.width, m_kRect.size.height);//得到该渲染纹理,将该纹理转为精灵经过裁切显示出来CCSprite* pTempImage = CCSprite::spriteWithTexture( (pScreen->getSprite())->getTexture(),m_kRect);pTempImage->setPosition(ccp(0,0));//Y翻转pTempImage->setFlipY(true);addChild(pTempImage,1);//结束且释放CC_SAFE_DELETE(pScreen);}
其中,CRectMake函数作用是利用开始点与结束点算出矩形的宽高和基本点,以供文件生成和精灵显示 使用。
void HelloWorld::CRectMake(CCPoint point1,CCPoint point2){CCPoint kOriginPoint;if (point1.x < point2.x){if (point1.y < point2.y){kOriginPoint.x = point1.x;kOriginPoint.y = point2.y;} else{kOriginPoint = point1;}} else{if (point1.y < point2.y){kOriginPoint = point2;} else{kOriginPoint.x = point2.x;kOriginPoint.y = point1.y;}}//至此确定左上角点(是左下角点,cocos2d以左下为基准)m_kRect = CCRect(kOriginPoint.x,kOriginPoint.y - abs(point1.y - point2.y),abs(point1.x - point2.x),abs(point1.y - point2.y));}
最终效果很生硬。大家去优化。
- cocos2d-x实现简易屏幕截图功能
- Cocos2d-x 截图功能
- 屏幕截图功能实现
- 【Cocos2d-x】截图分享功能
- 【Cocos2d-x】截图分享功能
- cocos2d-x使用OpenGL获取屏幕截图
- Android-屏幕截图功能实现
- COCOS2D中实现截图功能
- 【玩转cocos2d-x之二十四】截图保存功能的实现
- 【独立开发者er Cocos2d-x实战 006】使用Cocos2dx 实现截图功能
- 【玩转cocos2d-x之二十四】截图保存功能的实现
- Vb.net2005实现屏幕截图功能
- 用gdi 实现屏幕截图功能
- Android 代码实现屏幕截图功能
- Cocos2d-x 3.0-屏幕截图后跳转到另外场景
- MATLAB实现截图功能,返回屏幕截图的RGB数组
- java实现屏幕截图功能并保存截图
- Cocos2d-x实现简易翻牌效果
- iOS自定义的UISwitch按钮
- 高精度模板第一次修订版
- C++ string类的构造函数
- Android 滑动效果入门篇(一)—— ViewFlipper
- NAT-网络地址转换
- cocos2d-x实现简易屏幕截图功能
- 如何在visio中画虚线框以及将visio图形复制到word文档中虚线变为实线的问题
- spring事务传播属性与隔离级别
- opencv2 学习第7天 直方图的简单比较
- jquery 常用插件收集(有现成的就不用再自己写了和找了)、
- 使用Xcode和Instruments调试解决iOS内存泄露
- 将免安装绿色版tomcat添加到开机启动
- 获取四位随机数字字符串,且数字不重复
- Silverlight WCF RIA服务(十四)数据 4