一个简单实用的转换 StrToRGB 附源代码 #ffffffff->RGB(255,255,255)解决方法
一个简单实用的转换 StrToRGB 附源代码 #ffffffff->RGB(255,255,255)
StrToRGB实现了输入一个十六进制的字符串,转换后输出为一个COLORREF的颜色值,如输入#ffaabbcc,则输出为RGB(170,187,204)。在用xml定义一些颜色值信息,又要和VC进行交互时,可以很方便地达到一致。
更多信息以及实现过程参见我的博客:
http://blog.****.net/iyranly/archive/2007/11/26/1902622.aspx
------解决方案--------------------
支持一下~~~
------解决方案--------------------
支持
------解决方案--------------------
误进来了..和楼主真的有缘,分给我吧- -
------解决方案--------------------
强烈支持!
------解决方案--------------------
Up
------解决方案--------------------
jf
------解决方案--------------------
jf...
------解决方案--------------------
BOOL WINAPI
HtmlToRGB(
LPCTSTR pszBuff,
COLORREF* lpColor
)
{
CString strHtml(pszBuff);
if(strHtml.GetLength() != 7 || strHtml.Left(1) != "#")
return FALSE;
INT r, g, b;
CString strTem;
strTem = "0x" + strHtml.Mid(1, 2);
strTem += "\n0x" + strHtml.Mid(3, 2);
strTem += "\n0x" + strHtml.Mid(5, 2);
sscanf(strTem, "%I32x %I32x %I32x", &r, &g, &b);
return FALSE;
*lpColor = RGB(r, g, b);
return TRUE;
}
BOOL WINAPI
RGBToHtml(
COLORREF color,
LPTSTR lpString,
int nLenght
)
{
ASSERT(AfxIsValidString(lpString, nLenght));
if(lpString == NULL || nLenght < 8)
return FALSE;
sprintf(lpString, "#%0.2x%0.2x%0.2x", GetRValue(color), GetGValue(color), GetBValue(color));
return TRUE;
}
------解决方案--------------------
StrToRGB实现了输入一个十六进制的字符串,转换后输出为一个COLORREF的颜色值,如输入#ffaabbcc,则输出为RGB(170,187,204)。在用xml定义一些颜色值信息,又要和VC进行交互时,可以很方便地达到一致。
更多信息以及实现过程参见我的博客:
http://blog.****.net/iyranly/archive/2007/11/26/1902622.aspx
------解决方案--------------------
支持一下~~~
------解决方案--------------------
支持
------解决方案--------------------
误进来了..和楼主真的有缘,分给我吧- -
------解决方案--------------------
强烈支持!
------解决方案--------------------
Up
------解决方案--------------------
jf
------解决方案--------------------
jf...
------解决方案--------------------
BOOL WINAPI
HtmlToRGB(
LPCTSTR pszBuff,
COLORREF* lpColor
)
{
CString strHtml(pszBuff);
if(strHtml.GetLength() != 7 || strHtml.Left(1) != "#")
return FALSE;
INT r, g, b;
CString strTem;
strTem = "0x" + strHtml.Mid(1, 2);
strTem += "\n0x" + strHtml.Mid(3, 2);
strTem += "\n0x" + strHtml.Mid(5, 2);
sscanf(strTem, "%I32x %I32x %I32x", &r, &g, &b);
return FALSE;
*lpColor = RGB(r, g, b);
return TRUE;
}
BOOL WINAPI
RGBToHtml(
COLORREF color,
LPTSTR lpString,
int nLenght
)
{
ASSERT(AfxIsValidString(lpString, nLenght));
if(lpString == NULL || nLenght < 8)
return FALSE;
sprintf(lpString, "#%0.2x%0.2x%0.2x", GetRValue(color), GetGValue(color), GetBValue(color));
return TRUE;
}
------解决方案--------------------
- C/C++ code
COLORREF str2rgb(CString& str) { int val[] = {0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0,10,11,12,13,14,15}; str.MakeUpper(); str.TrimLeft("#"); BYTE bt[3]; ZeroMemory(bt, 3); int j=0; for(int i=0; i<6; i++,j++) { TCHAR ch = str.GetAt(i); int it = nu[ch-'0']; bt[j/2] |= it<<(((j+1)%2)*4); } return RGB(bt[2, bt[1], bt[0]); }