我有一个项目,在这里我需要使用期望COLORREF
的API和返回COLORREF
的另一个API。 COLORREF
是MFC,我的项目Qt不想使用任何MFC代码痕迹。 COLORREF
最终不过是无符号的,所以我希望可以解决。
所以有两个问题:
从返回COLORREF
的API获取无符号长整数,并从该无符号长整数创建QColor。请注意,我不能使用GetRValue()
或GetGValue()
,因为它们将要求我包括windows.h
。
从创建的QColor(我可以执行此操作)中,将其转换为体面的无符号长型,可以将其发送到期望COLORREF
的API。
最佳答案
由于COLORREF
只是组织为DWORD
的0x00bbggrr
,因此您可以轻松地将其转换为组件并从中构造QColor
。
int r = color & 0xff;
int g = (color >> 8) & 0xff;
int b = (color >> 16) & 0xff;
QColor qc(r, g, b);