如何在MFC中从COLORREF中提取RGB值?

问题描述 投票:0回答:1

事实上,我正试图从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 << ",";

请帮助我。

c++ mfc rgb
1个回答
1
投票

问题是这个。

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

它打印的是 wchar_t 基于 CStringchar-的流。

wchar_t* 不以字符串形式打印到 basic_ostream<char>.

最简单的解决方法可能是避免 CString 完全。

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

或者甚至可能。

file << (int)rgb.rgbtBlue << ",";
© www.soinside.com 2019 - 2024. All rights reserved.