如标题,只有一张图,做一个带灰化效果的按钮,如何做?
auto closeItem = MyMenuItemImage::create(
"CloseNormal.png",
"CloseSelected.png",
CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));
就是hellocpp里的这段,那个返回图标,
只有一张正常显示的图,如何做灰化按钮的效果?
如标题,只有一张图,做一个带灰化效果的按钮,如何做?
auto closeItem = MyMenuItemImage::create(
"CloseNormal.png",
"CloseSelected.png",
CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));
就是hellocpp里的这段,那个返回图标,
只有一张正常显示的图,如何做灰化按钮的效果?
我的版本是3.3的,只灰化一张图,如何做?
package com.study.jnilearn;
static cocos2d::Sprite* getGraySprite(cocos2d::Sprite* normalsprite)
{
if ( !normalsprite)
{
return nullptr;//CreateDefaultSprite();
}
//CCSprite转成CCimage
const cocos2d::Vec2& p = normalsprite->getAnchorPoint();
normalsprite->setAnchorPoint(cocos2d::Vec2(0, 0));
cocos2d::RenderTexture *outTexture = cocos2d::RenderTexture::create((int)normalsprite->getContentSize().width, (int)normalsprite->getContentSize().height);
outTexture->begin();
normalsprite->visit();
outTexture->end();
normalsprite->setAnchorPoint(p);
cocos2d::Image* finalImage = outTexture->newImage();
unsigned char *pData = finalImage->getData();
int iIndex = 0;
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 ++;
unsigned int iG = pData;
iIndex ++;
unsigned int iR = pData;
iIndex ++;
iIndex ++;
unsigned int iGray = 0.3 * iR + 0.4 * iG + 0.2 * iB;
pData = pData = pData = (unsigned char)iGray;
}
}
cocos2d::Texture2D *texture = new cocos2d::Texture2D;
texture->initWithImage(finalImage);
cocos2d::Sprite* newSprite = cocos2d::Sprite::createWithTexture(texture);
delete finalImage;
texture->release();
//setRealContentSize(newSprite, _scaleMode);
return newSprite;
}
}
```
</p
这个方法创建的图,直接就不显示,根本什么都没有
有没有高手帮忙看看啊
还有一个对象,如何整体灰化?
你想说你只有一张图片A,
但是想实现MyMenuItemImage::create(A,灰化A,XXXXX);??
我想到最简单的方式是自己建一个类,把A灰化之后成B
然后把创建好的return回来
灰度?直接改了这图片的color3B