博客园  :: 首页  :: 新随笔  :: 订阅 订阅  :: 管理

从16进制颜色值转换到RGB值(cocos2d-iphone版)

Posted on 2012-04-25 14:57  扬名  阅读(1949)  评论(0编辑  收藏  举报
 1 + (ccColor3B)colorWithHexString: (NSString *) stringToConvert
 2 {
 3     //去掉前后空格换行符
 4     NSString *cString = [[stringToConvert stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString]; 
 5     
 6     if ([cString length] < 6) 
 7         return ccWHITE;
 8     
 9     if ([cString hasPrefix:@"0X"]) 
10         cString = [cString substringFromIndex:2];
11     else if ([cString hasPrefix:@"#"]) 
12         cString = [cString substringFromIndex:1];
13     
14     if ([cString length] != 6) 
15         return ccWHITE;
16     
17     // Separate into r, g, b substrings
18     NSRange range;
19     range.location = 0;
20     range.length = 2;
21     NSString *rString = [cString substringWithRange:range];
22     
23     range.location = 2;
24     NSString *gString = [cString substringWithRange:range];
25     
26     range.location = 4;
27     NSString *bString = [cString substringWithRange:range];
28     
29     unsigned int r, g, b;
30     [[NSScanner scannerWithString:rString] scanHexInt:&r];  
31     [[NSScanner scannerWithString:gString] scanHexInt:&g];
32     [[NSScanner scannerWithString:bString] scanHexInt:&b];
33     //NSLog(@"r = %u, g = %u, b = %u",r, g, b);
34     return ccc3(r, g, b);
35 }