//根据现有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. ProgressBar 示例及自定义样式

    在layout中使用ProgerssBar,其中使用了自定义的样式 <ProgressBar android:id="@+id/footer_refresh_prgs" st ...

  2. gsp序列模式挖掘

    数据挖掘进阶之序列模式挖掘GSP算法 绪 继续数据挖掘方面算法的讲解,前面讲解了数据挖掘中关联规则算法FP-Growth的实现.此篇博文主要讲解基于有趣性度量标准的GSP序列模式挖掘算法.有关论文后期 ...

  3. bzoj3632

    裸的最大团,随机化大法好 多次随机出一个选择顺序然后贪心即可 ..,..] of boolean; a:..] of longint; v:..] of boolean; n,m,i,j,x,y,an ...

  4. bzoj1913

    这是一道好题,要求每个三点圆覆盖的点数和 我们可以算四边形的贡献,四边形显然分成两种:凸四边形和凹四边形 显然,凹四边形的覆盖只可能是三个点组成三角形包含另一个点,所以贡献是1 凸四边形,其最小圆覆盖 ...

  5. sql server2005内存过高释放方法

    最近做了一个网站qq.115sou.com,在服务器中SQL Server占用内存非常高,加内存后,SQL Server又吃掉新加的内存,好像内存永远不够用一样,怎么办? 其实这并不一定是由于SQL ...

  6. UVALive 4452 The Ministers' Major Mess(2-sat)

    2-sat.又学到了一种使用的方法:当确定选择某中状态A时,从它的对立状态A^1引一条边add(A^1,A),从而使凡是dfs经过对立状态,必然return false:即保证若存在一种可能性,必然是 ...

  7. 常见的js函数

    改变元素的样式   var  changeStyle = function(elem,name,value){      elem.style[name] = value; }   空位补零   fu ...

  8. hdu 1026 Ignatius and the Princess I(优先队列+bfs+记录路径)

    以前写的题了,现在想整理一下,就挂出来了. 题意比较明确,给一张n*m的地图,从左上角(0, 0)走到右下角(n-1, m-1). 'X'为墙,'.'为路,数字为怪物.墙不能走,路花1s经过,怪物需要 ...

  9. C# 邮件发送系统

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  10. Apache OFBiz 学习笔记 之 实体引擎

    1.概述     entity engine和常见的ORM有一点很大的不同,他的mapping object只有一个 GenericEntity,称它的entity engine 为adaptive ...