//根据现有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. IOS刷新数据

    在一个项目开发过程中为了更好的体验经常会用到下拉刷新更新数据,当然也伴随一些上拉加载更多数据的情况:当前比较火的EGOTableViewPullRefresh只实现了下拉功能,而没有上拉的功能.这里介 ...

  2. css3 去掉点击高光(移动端)

    在我们用手机浏览网页时,当点击某个链接或者点击事件时 会出现一层蓝色半透明的高光显示, 但在开发webapp时,由于网页是被native load去的,在app里面点击的时候如果出现高光则显得很不和谐 ...

  3. [Codeforces673A]Bear and Game(水题,思路)

    题目链接:http://codeforces.com/contest/673/problem/A 题意:一个人看一个90分钟的节目,然后告诉你一些有趣的时刻.这个人假如在15分钟内还没有看到有趣的时刻 ...

  4. C#.NET U盘插拔监控

    [1]涉及的知识点 1) windows消息处理函数 ? 1 protected override void WndProc(ref Message m) 捕获Message的系统硬件改变发出的系统消 ...

  5. UVa 10256 (判断两个凸包相离) The Great Divide

    题意: 给出n个红点,m个蓝点.问是否存在一条直线使得红点和蓝点分别分布在直线的两侧,这些点不能再直线上. 分析: 求出两种点的凸包,如果两个凸包相离的话,则存在这样一条直线. 判断凸包相离需要判断这 ...

  6. multipath 安装配置

    二. 安装配置 2.1 安装Multipath 查看相关包: [root@rac1 ~]# rpm -qa|grep device-mapper device-mapper-multipath-0.4 ...

  7. 注解框架ButterKnife

    将插件升级到1.3后支持Android Studio1.3 + ButterKnife7 如何使用 有所使用的布局 ID 上点击右键 (例如上图中的 R.layout.activity_setting ...

  8. PhoneGap 安装体验

    npm -v #显示版本,检查npm 是否正确安装. npm install express #安装express模块 npm install -g express #加上 -g 启用global安装 ...

  9. Java [Leetcode 165]Compare Version Numbers

    题目描述: Compare two version numbers version1 and version2.If version1 > version2 return 1, if versi ...

  10. noip2000提高组题解

    事实再次向我证明了RP的重要性... 第一题:进制转换 是我最没有把握AC的一道题目却是我唯一一道AC的题目,真是讽刺.看完题目几乎完全没有往正常的解法(取余倒序)去想,直接写了搜索,因为数据范围在2 ...