切取图片的一部分(利用CCRenderTexture)

       显示图片时,在项目中经常会用只读取图片的一部分,而不是全部。

       错误方式:很多人这时候会采用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作为坐标系的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值