平常用的顏色宏大概如下
#define RGBHex(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]
考慮到藍(lán)湖中獲得的十六進(jìn)制顏色值為#FF0000
,cv時(shí)需要先刪除#再添加0x
,想省略這部分
C
語(yǔ)言宏中'#'稱之為字符串化操作符(Stringizing Operator),它將函數(shù)宏的實(shí)際參數(shù)轉(zhuǎn)換為對(duì)應(yīng)的字符串常量立轧。利用這個(gè)特點(diǎn)定義如下的顏色宏
#define HEXA(COLOR,A) ({ \
char *color = #COLOR;\
NSString *colorString = [NSString stringWithUTF8String:color]; \
colorString = [colorString stringByReplacingOccurrencesOfString:@"#" withString:@""]; \
colorString = [colorString stringByReplacingOccurrencesOfString:@"0x" withString:@""]; \
unsigned int red,green,blue; \
NSRange range; \
range.length = 2; \
range.location = 0; \
[[NSScanner scannerWithString:[colorString substringWithRange:range]] scanHexInt:&red]; \
range.location = 2; \
[[NSScanner scannerWithString:[colorString substringWithRange:range]] scanHexInt:&green]; \
range.location = 4; \
[[NSScanner scannerWithString:[colorString substringWithRange:range]] scanHexInt:&blue]; \
[UIColor colorWithRed:red/255.0f green:green/255.0f blue:blue/255.0f alpha:A]; \
})
#define HEX(COLOR) HEXA(COLOR,1.0)
支持0xFF0000/#FF0000/FF0000
這三種格式