zoukankan      html  css  js  c++  java
  • 切取图片的一部分(利用CCRenderTexture)

    转自: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作为坐标系的。

  • 相关阅读:
    mybatis-redis项目分析
    mybatis-redis项目分析
    redis(一)简介
    redis(一)简介
    redis(二)redis+TCMALLOC高性能的缓存服务器的安装配置
    redis(二)redis+TCMALLOC高性能的缓存服务器的安装配置
    redis(三)redis+Keepalived主从热备秒级切换
    redis(三)redis+Keepalived主从热备秒级切换
    redis(五)redis与Mybatis的无缝整合让MyBatis透明的管理缓存二
    jQuery示例
  • 原文地址:https://www.cnblogs.com/sevenyuan/p/3990352.html
Copyright © 2011-2022 走看看