使用十六进制颜色值的CreateSolidBrush

时间:2017-01-02 06:44:14

标签: mfc gdi+ brush

如何使用给定任何颜色的十六进制值的CreateSolidBrush方法在mfc应用程序中创建画笔。

3 个答案:

答案 0 :(得分:1)

CreateSolidBrush采用COLORREF类型的参数。 COLORREF的别名,因此您可以只为其分配值:

DWORD

确保遵守记录的合同:

  

高位字节必须为零。

更安全的替代方法是使用RGB macro代替:

COLORREF color = 0xFF00FF;
HBRUSH hbr = ::CreateSolidBrush( color );

COLORREF color = RGB( 0xFF, 0x0, 0xFF ); HBRUSH bhr = ::CreateSolidBrush( color ); 宏确保生成的RGB值符合所需的内存布局。

<小时/> 如果您需要从COLORREF(或COLORREF)参数中提取单个颜色组件,则可以使用GetRValueGetGValueGetBValue宏:

DWORD

虽然这确实有效,但它引入了特定于体系结构的代码。此时,您只需使用最初的DWORD dwCol = 0xFF00FF; BYTE r = GetRValue( dwCol ); BYTE g = GetGValue( dwCol ); BYTE b = GetBValue( dwCol ); 代替DWORD(如我的第一段所示)。

答案 1 :(得分:0)

ScanFilter scanFilterMac = new ScanFilter.Builder().setDeviceAddress("88:88:88:B0:03:DB")

希望这有帮助。

答案 2 :(得分:-1)

我找到了解决方案。

#define GET_RVAL(num) (num & 0xff0000) >> 16
#define GET_GVAL(num) (num & 0x00ff00) >> 8
#define GET_BVAL(num) (num & 0x0000ff)

使用

创建画笔
hBrush = CreateSolidBrush(COLORREF(RGB(GET_RVAL(0xbfbfbf), GET_GVAL(0xbfbfbf), GET_BVAL(0xebfbfbf))));