如何将值从COLORREF转换为const char。目前我尝试按原样使用变量,但是我的编译器出现以下错误。
错误106错误C2664:'HC_Set_Color':无法将参数1从'COLORREF'转换为'const char *'c:\ b_gdm_src_wtx \ gdm_pda \ src \ gdmsmallsampledlg3d.cpp 2289
感谢。
答案 0 :(得分:2)
您可以选择一个并返回如下字符串表示:
void COLORREF2string(COLORREF cr, char* buffer) {
itoa(GetRValue(cr), buffer, 10);
buffer += strlen(buffer);
*buffer = ' ';
itoa(GetBValue(cr), buffer + 1, 10);
buffer += strlen(buffer);
*buffer = ' ';
itoa(GetGValue(cr), buffer + 1, 10);
}
然后像这样使用它:
COLORREF c = RGB(34, 54, 12);
char buf[16]; // 16 is big enough to hold any possible RGB combination
// with spaces between the numbers
COLORREF2string(c, buf);
cout << buf << endl;
将打印
34 54 12
如果需要,您可以将其设为R: x B: x G: x
自己的代表,但请记住相应地调整缓冲区的大小。
答案 1 :(得分:1)
假设这是您要遵循的规范:set_color.html#g406b806a5ed60dd9950fb12b0ce2077c“&gt; http://www.openhsf.org/docs_hsf/Hoops3DGS/hc_ref_manual/group_ 设置 _color。 HTML#g406b806a5ed60dd9950fb12b0ce2077c
您需要一个“(r = 0.5 g = 1 b = 0)”形式的字符串。这是获得它的一种方法:
COLORREF color = RGB(128,255,0);
stringstream ss;
ss << "(r=" << GetRValue(color)/255.0 << " g=" << GetGValue(color)/255.0 << " b=" << GetBValue(color)/255.0) << ")";
HC_Set_Color(ss.str());