//根据现有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. PHP命名空间概念解析

    1. PHP中的命名空间是什么? 什么是命名空间?“从广义上来说,命名空间是一种封装事物的方法.在很多地方都可以见到这种抽象概念.例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮 ...

  2. Event-based Asynchronous Pattern Overview基于事件的异步模式概览

    https://msdn.microsoft.com/zh-cn/library/wewwczdw(v=vs.110).aspx Applications that perform many task ...

  3. 使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务

    使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务 作者:Nikolay Manchev 分步构建一个跨这些平台的 ...

  4. Web内容管理系统 Magnolia 介绍-挖掘优良的架构(1)

    Magnolia简介: Magnolia CMS是一家瑞士公司自2003年起发布的一个基于Java的开源内容管理系统.它适合且已被使用在以下领域:电子商务(例如:COOP.Migros.Rossman ...

  5. android完全退出应用程序

    android 完全退出应用程序android android 退出应用程序, 单例模式管理Activity引自:http://www.yoyong.com/archives/199android 退 ...

  6. HDU 4946 共线凸包

    题目大意: 一些点在一张无穷图上面,每个点可以控制一些区域,这个区域满足这个点到达这个区域的时间严格小于其他点.求哪些点能够控制无穷面积的区域. 题目思路: 速度小的控制范围一定有限. 速度最大当且仅 ...

  7. bzoj3983

    显然我们得到这样几个结论 1.每次攻击对方一定是攻击最大的 2.自己合并也是合并最大和次大的 我们只要穷举下一开始是攻击还是合并,之后就是能攻击先攻击否则就合并 ..] of int64; var a ...

  8. IIS没有ASP.NET选项卡

    问题: 1.IIS没有ASP.NET选项卡 2.默认文档不起作用 分析: 1,在安装了.net framework 2.0后,iis站点属性里才会有asp.net的选项. 2,安装asp.net2.0 ...

  9. 从投影的角度理解pca:向量,投影,基,内积,坐标,维数,分散程度,方差,协方差矩阵,对角化,特征值分解,主成分分析PCA

    参考:http://blog.csdn.net/songzitea/article/details/18219237

  10. 对于随机变量的标准差standard deviation、样本标准差sample standard deviation、标准误差standard error的解释

    参考:http://blog.csdn.net/ysuncn/article/details/1749729