首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

HTML 顏色 #RRGGBB 轉 COLORREF 兩種方法:手動解析與 sscanf 高效寫法

     編輯:關於C++

需求背景

Windows GDI 使用 COLORREF(RGB(r,g,b))表示顏色,Web 使用 #RRGGBB 十六進位字串。兩者互轉常見於網頁顏色套用至桌面應用。

方法一:手動解析(教學用)

CString szColor = "#0290D8";
szColor.Replace("#", "");

int rgb[6] = {0};
TCHAR hex[] = _T("0123456789ABCDEF");
for (int i = 0; i < 6; i++) {
    TCHAR c = szColor.GetAt(i);
    for (int j = 0; j < 16; j++) {
        if (c == hex[j]) { rgb[i] = j; break; }
    }
}
COLORREF color = RGB(rgb[0]*16 + rgb[1],
                     rgb[2]*16 + rgb[3],
                     rgb[4]*16 + rgb[5]);

缺點:程式碼冗長、效率低、大小寫需自行處理。

方法二:sscanf 直接解析(推薦)

CString hexColor = "#0290D8";
DWORD r, g, b;
sscanf(hexColor, "#%2X%2X%2X", &r, &g, &b);
COLORREF color = RGB(r, g, b);
// 直接建立筆刷
CBrush brush;
brush.CreateSolidBrush(color);

優點:

  • 一行解析,程式碼極簡潔。
  • %2X 自動處理大小寫十六進位。
  • 標準 C 函式,效率高、可移植。

反向轉換 COLORREF → #RRGGBB

COLORREF c = RGB(2, 144, 216);
CString hex;
hex.Format("#%02X%02X%02X", GetRValue(c), GetGValue(c), GetBValue(c));
// hex = "#0290D8"

應用場景

  • 讀取網頁/設定檔顏色套用至 MFC/WIN32 繪圖。
  • 顏色選取器對話框與 Web 前端同步。
  • 匯入/匯出主題色彩方案。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved