一个简单实用的转换 StrToRGB 附源代码 #ffffffff->RGB(255,255,255)

iyranly 2007-12-04 01:42:20
StrToRGB实现了输入一个十六进制的字符串,转换后输出为一个COLORREF的颜色值,如输入#ffaabbcc,则输出为RGB(170,187,204)。在用xml定义一些颜色值信息,又要和VC进行交互时,可以很方便地达到一致。
更多信息以及实现过程参见我的博客:
http://blog.csdn.net/iyranly/archive/2007/11/26/1902622.aspx
...全文
677 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
forten2010 2011-10-15
  • 打赏
  • 举报
回复
支持支持支持支持支持
iyranly 2007-12-05
  • 打赏
  • 举报
回复
这样交流真好!
iyranly 2007-12-05
  • 打赏
  • 举报
回复
好!
mynamelj 2007-12-05
  • 打赏
  • 举报
回复
实际上#ffffff == 0xffffff
mynamelj 2007-12-05
  • 打赏
  • 举报
回复
我写个更简单的方法

BOOL WINAPI
HtmlToRGB(LPCTSTR pszBuff, COLORREF* lpColor)
{
int color;
char szBuff[9] = {0};

if(lstrlen(pszBuff) != 7 || pszBuff[0] != '#')
return FALSE;

strcat(szBuff, "0x");
strcat(szBuff, &pszBuff[1]);
StrToIntEx(szBuff, STIF_SUPPORT_HEX, &color);
*lpColor = color;

return TRUE;
}
凤矶 2007-12-05
  • 打赏
  • 举报
回复
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]);
}
iyranly 2007-12-05
  • 打赏
  • 举报
回复
非常感谢楼上的方法!确实简单!过两天帖子加分!
mynamelj 2007-12-05
  • 打赏
  • 举报
回复
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;
}
zhuzhu101011 2007-12-05
  • 打赏
  • 举报
回复
jf...
deletex 2007-12-05
  • 打赏
  • 举报
回复
jf
iyranly 2007-12-05
  • 打赏
  • 举报
回复
翻出来
iyranly 2007-12-04
  • 打赏
  • 举报
回复
由于时间关系,我没有对字符串进行像css上面的判断,有兴趣的朋友可以自己扩展!
zaodt 2007-12-04
  • 打赏
  • 举报
回复
Up
jsphuang 2007-12-04
  • 打赏
  • 举报
回复
强烈支持!
iyranly 2007-12-04
  • 打赏
  • 举报
回复
忽忽,进者有份
mr.zhoux 2007-12-04
  • 打赏
  • 举报
回复
误进来了..和楼主真的有缘,分给我吧- -
zhoujianhei 2007-12-04
  • 打赏
  • 举报
回复
支持
iyranly 2007-12-04
  • 打赏
  • 举报
回复
散分
iyranly 2007-12-04
  • 打赏
  • 举报
回复
进者有分!
snowbirdfly 2007-12-04
  • 打赏
  • 举报
回复
支持一下~~~
加载更多回复(1)

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧