我们今天就简单说下 cocos2d的Texture的简单用法,并将一张大图裁剪成小图并保存起来

我们先准备一张大图,如下:

只看图,表太在意内容啊。

我们的目的就是将这张大图裁剪成一张张的小图并保存下来。

首先,我们要将它裁剪成一张张的小图,小图的大小自己计算哈,我就不告诉你w=Width/5,h=(Height-108)/8的;

然后,将裁剪出来的小图一张张的绘制出来;

最后,将绘制的每一张保存起来。

我怎么这么多话啊,说了这么多,一行代码也写呢,好了,直接上代码:

auto size = Director::getInstance()->getVisibleSize();
const char * pSaveImageFromar = "image_%d_%d_%d.png";
int row = 7;
int col = 4;
int w = 137;
int h = 137;
for (int k = 0; k < 6; k++)
{
  auto texturecache = Director::getInstance()->getTextureCache()->addImage(String::createWithFormat("%d.jpg", k)->getCString());
  for (int i = 0; i <= row; i++)
  {
    for (int j = 0; j <= col; j++)
    {
      auto sp = Sprite::createWithTexture(texturecache, Rect(0 + j + j*w, 108 + i*h + i, w, h));        //裁剪出来的精灵
      sp->setPosition(sp->getContentSize().width / 2, sp->getContentSize().height / 2);
      const char* pName = String::createWithFormat(pSaveImageFromar, k, i, j)->getCString();
      RenderTexture* rrt = RenderTexture::create(w, h); //创建一个对象,用来绘制裁剪出来的精灵,起点是左下角,向右w,向上h,绘制出来的大小   
      rrt->setPosition(size.width / 2, size.height / 2);           //默认绘制出来的默认是放在左下角的 为了方便看到就移到中心了
      rrt->begin();             //在这里开始捕捉
      sp->visit();               //捕捉的对象
      rrt->end();               //捕捉结束
      rrt->saveToFile(pName, Image::Format::PNG);         //将捕捉到的对象保存起来
    }
  }
}

这样我们就将裁剪的图片保存下来了,保存路径我们可以进到saveToFile中查看

其中有一行FileUtils::getInstance()->getWritablePath(),我们打印下输出路径就知道保存到哪了。

最终我们就获得了一张张的小图:

酱紫以后就不愁聊天木有表情了吧,将这些都到添加到QQ表情中就OK啦。

当然如果这张大图是用TexturePacker打包的,我们还可以通过Anti_TexturePacker一键将其裁剪。

因此,通过这个我们也很容易举一反三的实现拍照截屏的功能了。

好了,不早了,明天还得码砖。

2016年9月19日 0:58 于苏州。

最新文章

  1. 无法解决“Microsoft.SharePoint.Security, Version=15.0.0.0,”与“Microsoft.SharePoint.Security, Version=14.0.0.0”之间的冲突
  2. DFS序+线段树+bitset CF 620E New Year Tree(圣诞树)
  3. 自己封装的一个LoadRes组件
  4. 为网格布局图片打造的超炫 CSS 加载动画
  5. linux进程间通信-管道
  6. 清北暑假模拟day1 生活
  7. Servlet域对象ServletContext小应用------计算网站访问量
  8. 解决ecshop在线客户点击无法唤醒QQ问题
  9. 查看alter错误,grep -A,-B,-C的妙用
  10. Vim C/C++的一键编译
  11. SEO_Alexa排名
  12. netcat
  13. Android 微信分享信息
  14. 星际SC 地图 Big Game Fort 要塞之战 修正了 BIG GAME 地图的平衡性
  15. POJ 1042 Gone Fishing (贪心)(刘汝佳黑书)
  16. CF700E E. Cool Slogans
  17. java基础知识—变量、数据类型和运算符
  18. 小程序cover-view踩过的坑
  19. Linux下键盘值 对应input_evnet的code值。
  20. SQLI DUMB SERIES-9&amp;&amp;10

热门文章

  1. Redis API与常用数据类型简介
  2. VS2012下systemC配置
  3. MIT Introduction to Computer Science and Programming (Lesson one )
  4. 使用MVCJqGrid
  5. 实现栈最小元素的min函数
  6. angular 实战系列 之 mvvm模式
  7. 【译】TensorFlow Python Docs 之 overview
  8. jQuery中的事件监听方式及异同点
  9. 项目做成jar包
  10. WP中一些耗时的东西