RGB内部实现&常用颜色&与字符串的转换
2013-11-29 15:34
603 查看
RGB函数计算公式: 颜色值 = (65536 * Blue) + (256 * Green) + (Red)
color is Double
r, g, b is Integer
color = RGB(0, 0, 0)
r = color Mod 256
g = (color / 256) Mod 256
b = (color / 256 / 256) Mod 256
颜色
常用颜色 Colour Red Green Blue 值
黑色 Black 0 0 0 0
白色 White 255 255 255 16777215
灰色 Gray 192 192 192 12632256
深灰色 DarkGrey 128 128 128 8421504
红色 Red 255 0 0 255
深红色 DarkRed 128 0 0 128
绿色 Green 0 255 0 65280
深绿色 DarkGreen 0 128 0 32768
蓝色 Blue 0 0 255 16711680
深蓝色 DarkBlue 0 0 128 8388608
紫红色 Magenta 255 0 255 16711935
深紫红 DarkMagenta 128 0 128 8388736
紫色 Cyan 0 255 255 16776960
深紫 DarkCyan 0 128 128 8421376
黄色 Yellow 255 255 0 65535
棕色 Brown 128 128 0 32896
与字符串的转换
void Color2Str(const COLORREF& _clr, LPTSTR lpDestStr, BOOL bIsHex)
{
if(!lpDestStr) return ;
if(bIsHex)
{
int nR(GetRValue(_clr)), nG(GetGValue(_clr)), nB(GetBValue(_clr));
wsprintf(lpDestStr, _T("#%02X%02X%02X"), nR, nG, nB);
}
else
{
wsprintf(lpDestStr, _T("%d"), _clr);
}
}
COLORREF Str2Color(LPCTSTR lpRGB)
{
if(!lpRGB || !*lpRGB) return 0;
long lRGBLen(_tcslen(lpRGB));
if(lpRGB[0] == _T('#'))
{
if(lRGBLen != 7) return 0;
TCHAR szColor[6] = {0};
int nR(0),nG(0),nB(0), TCHAR_SIZE(sizeof(TCHAR));
memcpy(szColor, lpRGB+1, 2*TCHAR_SIZE);
nR = _tcstoul(szColor, NULL, 16);
memcpy(szColor, lpRGB+3, 2*TCHAR_SIZE);
nG = _tcstoul(szColor, NULL, 16);
memcpy(szColor, lpRGB+5, 2*TCHAR_SIZE);
nB = _tcstoul(szColor, NULL, 16);
return RGB(nR,nG,nB);
}
return _tcstoul(lpRGB, NULL, 10);
}
本文出自 “BaggerSky” 博客,谢绝转载!
color is Double
r, g, b is Integer
color = RGB(0, 0, 0)
r = color Mod 256
g = (color / 256) Mod 256
b = (color / 256 / 256) Mod 256
颜色
常用颜色 Colour Red Green Blue 值
黑色 Black 0 0 0 0
白色 White 255 255 255 16777215
灰色 Gray 192 192 192 12632256
深灰色 DarkGrey 128 128 128 8421504
红色 Red 255 0 0 255
深红色 DarkRed 128 0 0 128
绿色 Green 0 255 0 65280
深绿色 DarkGreen 0 128 0 32768
蓝色 Blue 0 0 255 16711680
深蓝色 DarkBlue 0 0 128 8388608
紫红色 Magenta 255 0 255 16711935
深紫红 DarkMagenta 128 0 128 8388736
紫色 Cyan 0 255 255 16776960
深紫 DarkCyan 0 128 128 8421376
黄色 Yellow 255 255 0 65535
棕色 Brown 128 128 0 32896
与字符串的转换
void Color2Str(const COLORREF& _clr, LPTSTR lpDestStr, BOOL bIsHex)
{
if(!lpDestStr) return ;
if(bIsHex)
{
int nR(GetRValue(_clr)), nG(GetGValue(_clr)), nB(GetBValue(_clr));
wsprintf(lpDestStr, _T("#%02X%02X%02X"), nR, nG, nB);
}
else
{
wsprintf(lpDestStr, _T("%d"), _clr);
}
}
COLORREF Str2Color(LPCTSTR lpRGB)
{
if(!lpRGB || !*lpRGB) return 0;
long lRGBLen(_tcslen(lpRGB));
if(lpRGB[0] == _T('#'))
{
if(lRGBLen != 7) return 0;
TCHAR szColor[6] = {0};
int nR(0),nG(0),nB(0), TCHAR_SIZE(sizeof(TCHAR));
memcpy(szColor, lpRGB+1, 2*TCHAR_SIZE);
nR = _tcstoul(szColor, NULL, 16);
memcpy(szColor, lpRGB+3, 2*TCHAR_SIZE);
nG = _tcstoul(szColor, NULL, 16);
memcpy(szColor, lpRGB+5, 2*TCHAR_SIZE);
nB = _tcstoul(szColor, NULL, 16);
return RGB(nR,nG,nB);
}
return _tcstoul(lpRGB, NULL, 10);
}
本文出自 “BaggerSky” 博客,谢绝转载!
相关文章推荐
- js方法实现rgb颜色转换成16进制格式的代码的方法
- 十六进制颜色字符串转换成Color在Silverlight中的实现
- JavaScript实现把rgb颜色转换成16进制颜色的方法
- PHP实现将颜色hex值转换成rgb的方法
- javascript实现十六进制颜色值(HEX)和RGB格式相互转换
- javascript实现rgb颜色转换成16进制格式
- flex实现16进制颜色和RGB颜色值的相互转换
- OpenCV实现RGB颜色空间和HSI颜色空间的相互转换
- 一些常用字符串操作函数的内部实现
- Java 利用 ICC 色彩空间 color space profile 实现 RGB 和 CMYK 颜色的相互转换
- RGB颜色转换_16进制颜色(html颜色值)字符串转为UIColor
- javascript实现rgb颜色转换成16进制格式
- 实现RGB,CMY(K),YUV,YIQ,YCbCr颜色的转换算法
- RGB,CMY(K),YUV,YIQ,YCbCr颜色的转换算法(java实现)
- ios客户端学习-颜色将16位值转换成rgb值,UIColor与字符串互转
- OpenCV实现RGB颜色空间和HSI颜色空间的相互转换
- 颜色RGB名称字符串转换成资源id
- RGB,CMY(K),YUV,YIQ,YCbCr颜色的转换算法(java实现) 分类: Android JAVA 2015-06-08 19:30 26人阅读 评论(0) 收藏
- javascript实现十六进制颜色值(HEX)和RGB格式相互转换
- OpenCV实现RGB颜色空间和HSI颜色空间的相互转换