如何使用给定任何颜色的十六进制值的CreateSolidBrush方法在mfc应用程序中创建画笔。
答案 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
)参数中提取单个颜色组件,则可以使用GetRValue,GetGValue和GetBValue宏:
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))));