《不靠谱2.x》006.CCSprite(上)001 CCImage
发布时间:2020-12-14 21:40:53 所属栏目:百科 来源:网络整理
导读:一、概述 CCSprite涉及到了CCTexture2D、CCSpriteFrame、CCSpriteBatchNode,因此在了解CCSprite前,肯定要先对它们进行了解。而CCTexture2D又涉及到了CCImage,所以这里先来了解CCImage,源码如下: class CC_DLL CCImage : public CCObject{ public : CCIm
一、概述 class CC_DLL CCImage : public CCObject
{
public:
CCImage();
~CCImage();
typedef enum
{
kFmtJpg = 0,kFmtPng,kFmtTiff,kFmtWebp,kFmtRawData,kFmtUnKnown
}EImageFormat;
typedef enum
{
kAlignCenter = 0x33,///< Horizontal center and vertical center.
kAlignTop = 0x13,///< Horizontal center and vertical top.
kAlignTopRight = 0x12,///< Horizontal right and vertical top.
kAlignRight = 0x32,///< Horizontal right and vertical center.
kAlignBottomRight = 0x22,///< Horizontal right and vertical bottom.
kAlignBottom = 0x23,///< Horizontal center and vertical bottom.
kAlignBottomLeft = 0x21,///< Horizontal left and vertical bottom.
kAlignLeft = 0x31,///< Horizontal left and vertical center.
kAlignTopLeft = 0x11,///< Horizontal left and vertical top.
}ETextAlign;
/** @brief Load the image from the specified path. @param strPath the absolute file path. @param imageType the type of image,currently only supporting two types. @return true if loaded correctly. */
bool initWithImageFile(const char * strPath,EImageFormat imageType = kFmtPng);
/* @brief The same result as with initWithImageFile,but thread safe. It is caused by loadImage() in CCTextureCache.cpp. @param fullpath full path of the file. @param imageType the type of image,currently only supporting two types. @return true if loaded correctly. */
bool initWithImageFileThreadSafe(const char *fullpath,EImageFormat imageType = kFmtPng);
/** @brief Load image from stream buffer. @warning kFmtRawData only supports RGBA8888. @param pBuffer stream buffer which holds the image data. @param nLength data length expressed in (number of) bytes. @param nWidth,nHeight,nBitsPerComponent are used for kFmtRawData. @return true if loaded correctly. */
bool initWithImageData(void * pData,int nDataLen,EImageFormat eFmt = kFmtUnKnown,int nWidth = 0,int nHeight = 0,int nBitsPerComponent = 8);
/** @brief Create image with specified string. @param pText the text the image will show (cannot be nil). @param nWidth the image width,if 0,the width will match the text's width. @param nHeight the image height,the height will match the text's height. @param eAlignMask the test Alignment @param pFontName the name of the font used to draw the text. If nil,use the default system font. @param nSize the font size,use the system default size. */
bool initWithString(
const char * pText,int nWidth = 0,int nHeight = 0,ETextAlign eAlignMask = kAlignCenter,const char * pFontName = 0,int nSize = 0);
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) || (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
bool initWithStringShadowStroke(
const char * pText,int nWidth = 0,int nHeight = 0,ETextAlign eAlignMask = kAlignCenter,const char * pFontName = 0,int nSize = 0,float textTintR = 1,float textTintG = 1,float textTintB = 1,bool shadow = false,float shadowOffsetX = 0.0,float shadowOffsetY = 0.0,float shadowOpacity = 0.0,float shadowBlur = 0.0,bool stroke = false,float strokeR = 1,float strokeG = 1,float strokeB = 1,float strokeSize = 1
);
#endif
unsigned char * getData() { return m_pData; }
int getDataLen() { return m_nWidth * m_nHeight; }
bool hasAlpha() { return m_bHasAlpha; }
bool isPremultipliedAlpha() { return m_bPreMulti; }
/** @brief Save CCImage data to the specified file,with specified format. @param pszFilePath the file's absolute path,including file suffix. @param bIsToRGB whether the image is saved as RGB format. */
bool saveToFile(const char *pszFilePath,bool bIsToRGB = true);
CC_SYNTHESIZE_READONLY(unsigned short,m_nWidth,Width);
CC_SYNTHESIZE_READONLY(unsigned short,m_nHeight,Height);
CC_SYNTHESIZE_READONLY(int,m_nBitsPerComponent,BitsPerComponent);
protected:
bool _initWithJpgData(void *pData,int nDatalen);
bool _initWithPngData(void *pData,int nDatalen);
bool _initWithTiffData(void *pData,int nDataLen);
bool _initWithWebpData(void *pData,int nDataLen);
// @warning kFmtRawData only support RGBA8888
bool _initWithRawData(void *pData,int nDatalen,int nWidth,int nHeight,int nBitsPerComponent,bool bPreMulti);
bool _saveImageToPNG(const char *pszFilePath,bool bIsToRGB = true);
bool _saveImageToJPG(const char *pszFilePath);
unsigned char *m_pData;
bool m_bHasAlpha;
bool m_bPreMulti;
private:
// noncopyable
CCImage(const CCImage& rImg);
CCImage & operator=(const CCImage&);
};
二、分析 三、总结 1、知道了可使用图片、字符串生成 image 对象,并可保存到指定路径下。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |