//根据现有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. OAuth2.0和SSO授权的区别

    OAuth2.0和SSO授权   一.OAuth2.0授权协议 一种安全的登陆协议,用户提交的账户密码不提交到本APP,而是提交到授权服务器,待服务器确认后,返回本APP一个访问令牌,本APP即可用该 ...

  2. 详细讲解 关于Linux静态库和动态库的分析

    基本概念 库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀. 例如:libhello.so libhello.a 为了在同一系统中使用不同版本的库,可以在库文件名后加上版本号为后缀,例如: ...

  3. Android开发之创建桌面快捷方式

    Android创建桌面快捷方式就是在桌面这个应用上创建一个快捷方式,桌面应用:launcher2 通过查看launcher2的清单文件: <!-- Intent received used to ...

  4. Linux 下查看文件字符编码和转换编码

    Linux 下查看文件字符编码和转换编码 如果你需要在Linux中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题.Windows中默认的文件格式是GBK(gb2312),而Linu ...

  5. 一个简单的ORM制作(SQL帮助类)

    一个简单的ORM制作大概需要以下几个类: SQL执行类 CURD操作类 其他酱油类 先从SQL执行类说起,可能会涉及数据库的迁移等问题,所以需要定义一个接口以方便迁移到其他数据库, 事务没提供命名,若 ...

  6. 用JAVA代码构造一个日历

    package day0603; import java.text.ParseException; import java.text.SimpleDateFormat; import java.uti ...

  7. 原创:js代码, 让dedecms支持Tag选择, 添加内容更为方便,不用手输Tag

    dedecms在编辑修改内容时,TAG标签需要手动输,中文的Tag, 中间还得用半角字符','分隔,  输入法切来切去很不方便,   于是动手改后台代码, 利用后台的tags_main.php, 让d ...

  8. 纯CSS3带动画效果导航菜单

    随着互联网的发展,网页能表现的东西越来越多.由最开始单纯的文字和链接构成的网页,到后来的表格布局,再到div+css模式,现在发展到了html+css3.网页能表达的东西越来越多,css3兴起已经很多 ...

  9. ffmpeg Windows下采集摄像头一帧数据,并保存为bmp图片

    这里请注意,在编译ffmpeg时,不要使用--disable-devices选项. 使用 --enable-encoder=rawvideo --enable-decoder=rawvideo 启用r ...

  10. MVC&WebForm对照学习:ajax异步请求

    写在前面:由于工作需要,本人刚接触asp.net mvc,虽然webform的项目干过几个.但是也不是很精通.抛开asp.net webform和asp.net mvc的各自优劣和诸多差异先不说.我认 ...