将 COLORREF 转换为 const char

发布于 2024-12-03 22:39:01 字数 208 浏览 0 评论 0原文

如何将值从 COLORREF 转换为 const char。目前,我尝试按原样使用该变量,但编译器出现以下错误。

错误 106 错误 C2664:“HC_Set_Color”:无法将参数 1 从“COLORREF”转换为“const char *”c:\b_gdm_src_wtx\gdm_pda\src\gdmsmallsampledlg3d.cpp 2289

谢谢。

How do I convert the value from a COLORREF to a const char. Currently I try to use the variable as it is, but I get the following error from my compiler.

Error 106 error C2664: 'HC_Set_Color' : cannot convert parameter 1 from 'COLORREF' to 'const char *' c:\b_gdm_src_wtx\gdm_pda\src\gdmsmallsampledlg3d.cpp 2289

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寒江雪… 2024-12-10 22:39:01

您可以采用一个并返回如下所示的字符串表示形式:

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 ,但请记住相应地调整缓冲区的大小。

You can take one and return a string representation like this:

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);
}

Then use it like this:

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;

Which will print

34 54 12

You can make it a fancier representation like R: x B: x G: x yourself if you want, but remember to adjust the size of your buffer accordingly.

少年亿悲伤 2024-12-10 22:39:01

假设这是您要遵循的规范: set_color.html#g406b806a5ed60dd9950fb12b0ce2077c">http://www.openhsf.org/docs_hsf/Hoops3DGS/hc_ref_manual/group_set_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());

Assuming this is the spec you're trying to follow: set_color.html#g406b806a5ed60dd9950fb12b0ce2077c">http://www.openhsf.org/docs_hsf/Hoops3DGS/hc_ref_manual/group_set_color.html#g406b806a5ed60dd9950fb12b0ce2077c

You need a string of the form "(r=0.5 g=1 b=0)". Here's one way to get it:

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());
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文