//根据现有CCSprite,变亮和变灰
CCSprite*
FlyLeaf::graylightWithCCSprite(CCSprite* oldSprite,
bool isLight)
{
    //CCSprite转成CCimage
    CCPoint
p = oldSprite->getAnchorPoint();
    oldSprite->setAnchorPoint(ccp(0,0));
    CCRenderTexture
*outTexture = CCRenderTexture::create((
int)oldSprite->getContentSize().width,(int)oldSprite->getContentSize().height);
    outTexture->begin();
    oldSprite->visit();
    outTexture->end();
    oldSprite->setAnchorPoint(p);
 
    CCImage*
finalImage = outTexture->newCCImage();
    unsigned char *pData
= finalImage->getData();
    int iIndex
= 0;
 
    if(isLight)
    {
        for (int i
= 0; i < finalImage->getHeight(); i ++)
        {
            for (int j
= 0; j < finalImage->getWidth(); j ++)
            {
                //
highlight
                int iHightlightPlus
= 50;
                int iBPos
= iIndex;
                unsigned int iB
= pData[iIndex];
                iIndex
++;
                unsigned int iG
= pData[iIndex];
                iIndex
++;
                unsigned int iR
= pData[iIndex];
                iIndex
++;
                //unsigned
int o = pData[iIndex];
                iIndex
++;  
//原来的示例缺少
                iB
= (iB + iHightlightPlus > 255 ? 255 : iB + iHightlightPlus);
                iG
= (iG + iHightlightPlus > 255 ? 255 : iG + iHightlightPlus);
                iR
= (iR + iHightlightPlus > 255 ? 255 : iR + iHightlightPlus);
                pData[iBPos]
= (unsigned 
char)iB;
                pData[iBPos
+ 1] = (unsigned 
char)iG;
                pData[iBPos
+ 2] = (unsigned 
char)iR;
            }
        }
    }else{
        for (int i
= 0; i < finalImage->getHeight(); i ++)
        {
            for (int j
= 0; j < finalImage->getWidth(); j ++)
            {
                //
gray
                int iBPos
= iIndex;
                unsigned int iB
= pData[iIndex];
                iIndex
++;
                unsigned int iG
= pData[iIndex];
                iIndex
++;
                unsigned int iR
= pData[iIndex];
                iIndex
++;
                //unsigned
int o = pData[iIndex];
                iIndex
++; 
//原来的示例缺少
                unsigned int iGray
= 0.299 * iR + 0.587 * iG + 0.114 * iB;
                pData[iBPos]
= pData[iBPos + 1] = pData[iBPos + 2] = (unsigned 
char)iGray;
            }
        }
    }
 
    CCTexture2D
*texture = 
new CCTexture2D;
    texture->initWithImage(finalImage);
    CCSprite*
newSprite = CCSprite::createWithTexture(texture);
    delete finalImage;
    texture->release();
    return newSprite;
}

cocos2d-x图片变灰或者变亮的更多相关文章

  1. CSS使图片变灰

    为了悼念,各大网站都纷纷将自己的站点颜色调灰,就连图片也一样,到底如何实现的呢,请看下面的代码. 〈img src="http://hovertree.com/hvtimg/201512/f ...

  2. NGUI 图片变灰

    效果图 1.先准备好一个变灰shader.代码如下 Shader "Custom/Gray" { Properties { _MainTex ("Base (RGB), ...

  3. c# winform 把彩色图片转换为灰色的图片,变灰,灰度图片,速度很快,safe,unsafe

    把彩色图片转换为灰色的图片,直接用.net接口遍历每个像素点转换的效率非常低,800K的图片65万像素我的电脑要用5分钟,而用了unsafe,速度提高了几千倍,同样的图片只用了0.几秒 附一个常用的遍 ...

  4. Unity图片变灰的方式

    http://www.tuicool.com/articles/Vruuqme NGUI中的Button差点儿是最经常使用到的控件之中的一个,而且能够组合各种组件(比方UIButtonColor,UI ...

  5. JAVA彩色图片变灰处理

    File file = new File("F:/firefox.png"); File destFile = new File("F:/pic/" + Sys ...

  6. 图片变灰css3

    -webkit-filter: grayscale(100%); -moz-filter: grayscale(100%); -ms-filter: grayscale(100%); -o-filte ...

  7. css3图片变灰

    html{ filter:grayscale(100%); -webkit-filter:grayscale(100%); -moz-filter:grayscale(100%); -ms-filte ...

  8. 关于cocos2d-x精灵加亮及变灰效果

    //根据现有CCSprite,变亮和变灰 static CCSprite* graylightWithCCSprite(CCSprite* oldSprite,bool isLight) { //CC ...

  9. 怎么让让整个HTML页面变灰

    怎么让让整个HTML页面变灰 其实很简单,我们只需要一句话. html {filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1 ...

随机推荐

  1. BIND9配置文件详解模板[转载]

    在CU上看到了一篇关于BIND9配置文件详解的文章,感觉不错,现转载了分享一下. //named.conf 注释说明 by shellyxz@163.com// 此文件对bind9的默认配置文件的说明 ...

  2. apk反编译(8)如何完全防止反编译?

    在android 的应用很难做到完全防止反编译,即使用ProGuard混淆的后,也能得到smali代码,这个语法也很简单,很容易理解. 只能通过增加破解难度和成本,使破解者失去耐心. 其中一个常见解决 ...

  3. 一些非常有用的html,css,javascript代码片段(持久更新)

    1.判断设备是否联网 if (navigator.onLine) { //some code }else{ //others code } 2.获取url的指定参数 function getStrin ...

  4. 面向对象设计Object Oriented Design

    http://www.codeproject.com/Articles/93369/How-I-explained-OOD-to-my-wife http://www.cnblogs.com/niyw ...

  5. ER模型到关系模型的转换规则

    E-R模型向关系模型的转换规则: 一.两元联系的转换规则 (1)实体类型的转换 将每个实体类型转换成一个关系模式,实体的属性即为关系的属性,实体标识符即为关系的键. (2)联系类型的转换 a实体间的联 ...

  6. C++中关于指针初始化和使用NULL的理解

    1.严禁使用未被初始化的指针:C++创建指针的时候,只分配存储地址的内存,并不会分配存储数据的内存,所以指针可能指向任何位置. (1)使用解除运算符(*)之前,一定要对指针初始化,否则若声明的指针刚好 ...

  7. git文件未改动pull的时候提示冲突

    今天在mac下使用git工具,出现一个很奇怪的问题. 先声明当前工作目录是干净的,运行 git status 没有任何文件改动,且没有任何需要push的文件. 我执行 git pull 命令,直接提示 ...

  8. [转]ASP.NET 页生命周期概述

    原文链接:http://msdn.microsoft.com/zh-cn/library/ms178472(v=vs.110).aspx  对应版本:.NET 4.0 ASP.NET 页运行时,此页将 ...

  9. UVA 11865 Stream My Contest(最小树形图)

    题意:N台机器,M条有向边,总资金C,现要到搭建一个以0号机(服务器)为跟的网路,已知每条网线可以把数据从u传递到v,其带宽为d,花费为c,且d越大,传输速度越快,问能够搭建的传输速度最快的网络d值是 ...

  10. crtbegin_dynamic.o: No such file: No such file or directory

    /homesec/android2/zhangbin/053work3/hi050src/HiSTBAndroidV400R001C00SPC050B012/prebuilt/linux-x86/to ...