簡體   English   中英

如何從 MFC 中的 COLORREF 中提取 RGB 值?

[英]How to extract RGB value from COLORREF in MFC?

實際上,我正在嘗試從 COLORREF 中提取 RGB 值,但沒有得到 0 到 255 范圍內的值。相反,我總是得到一些字符串。 例如:0000017153665268我使用了以下方法:

    COLORREF obj_Colorref = obj_CColorDialog.GetColor();
    RGBTRIPLE rgb;
    rgb.rgbtRed = GetRValue(obj_Colorref);
    rgb.rgbtGreen = GetGValue(obj_Colorref);
    rgb.rgbtBlue = GetBValue(obj_Colorref);

    CString sRed;
    CString sGreen;
    CString sBlue;
    sRed.Format(L"%d", rgb.rgbtRed);
    sGreen.Format(L"%d", rgb.rgbtGreen);
    sBlue.Format(L"%d", rgb.rgbtBlue);
    std::ofstream file;
    file.open("..//Projects//Ribbon//x64//color.txt");
    file << "#"<<"\n"<<"#"<< sRed << ",";
    file << sGreen << ",";
    file << sBlue << ",";

請幫幫我。

問題在於:

file << "#"<<"\n"<<"#"<< sRed << ",";
file << sGreen << ",";
file << sBlue << ",";

它將基於wchar_tCString打印到基於char的 stream。

wchar_t*不會作為字符串打印到basic_ostream<char>中。

最簡單的修復方法可能是完全避免使用CString

file << std::to_string((int)rgb.rgbtBlue) << ",";

甚至可能:

file << (int)rgb.rgbtBlue << ",";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM