转自:http://blog.csdn.net/wcjwdq/article/details/37932769
显示图片时,在项目中经常会用只读取图片的一部分,而不是全部。
错误方式:很多人这时候会采用setTextureRect(CCRectMake(x, y, width, height)),事实证明,这种方法是不可取的。
正确方式:
那么,我们应该用什么方法呢??下面来介绍一种方法,给出函数的实现。
CCSprite * HelloWorld::getPartTexture(CCSprite * pSprite) { if (!pSprite) { return CCSprite::create(); } //把renderTexture矩形当做一个画布,左下角为原点。 CCRenderTexture * rt = CCRenderTexture::create(180, 200); rt->begin(); pSprite->setFlipY(true); pSprite->setAnchorPoint(ccp(0, 0)); pSprite->setPosition(ccp(-10, 0)); pSprite->visit(); rt->end(); return CCSprite::createWithTexture(rt->getSprite()->getTexture()); }
首先,创建一个CCRenderTexture,大小就是你想显示的图片大小。
其次,调用 CCRenderTexture:begin. 这个方法会启动OpenGL,并且接下来,任何绘图的命令都会渲染到CCRenderTexture里面去,而不是画到屏幕上。
第三,对所要切的Sprite1调用visit方法。(如果你要对Sprite1进行锚点、位置或者翻转进行设置,必须要在调用visit之前,否则写了和没写的效果是一样的)
第四,调用 CCRenderTexture:end。这个方法会渲染纹理,并且会关闭渲染至CCRenderTexture的通道。
第五,从生成的纹理中创建生成一个Sprite2。
注意:在绘制过程中,CCRenderTexture所创建的矩形相当于一个坐标系L,左下角的坐标为(0,0),向右和向上越来越大。Sprite1设置坐标是以这个L作为坐标系的。
分类:
Cocos2d-x 基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述