我有一个项目,在这里我需要使用期望COLORREF的API和返回COLORREF的另一个API。 COLORREF是MFC,我的项目Qt不想使用任何MFC代码痕迹。 COLORREF最终不过是无符号的,所以我希望可以解决。

所以有两个问题:


从返回COLORREF的API获取无符号长整数,并从该无符号长整数创建QColor。请注意,我不能使用GetRValue()GetGValue(),因为它们将要求我包括windows.h
从创建的QColor(我可以执行此操作)中,将其转换为体面的无符号长型,可以将其发送到期望COLORREF的API。

最佳答案

由于COLORREF只是组织为DWORD0x00bbggrr,因此您可以轻松地将其转换为组件并从中构造QColor

int r = color & 0xff;
int g = (color >> 8) & 0xff;
int b = (color >> 16) & 0xff;
QColor qc(r, g, b);

09-08 01:15