Как создать кисть в приложении mfc с помощью метода CreateSolidBrush с учетом любого шестнадцатеричного значения для цвета.CreateSolidBrush с использованием шестнадцатеричных значений цвета
ответ
CBrush newBrush;
COLORREF color = 0xFF00FFFF;
newBrush.CreateSolidBrush(color);
Надеюсь, это поможет.
Это нарушает [документацию] (https://msdn.microsoft.com/en-us/library/dd183449.aspx): * «Байт высокого порядка должен быть равен нулю». * – IInspectable
CreateSolidBrush принимает аргумент типа COLORREF. COLORREF
является псевдонимом для DWORD
, так что вы могли просто присвоить ему значение:
COLORREF color = 0xFF00FF;
HBRUSH hbr = ::CreateSolidBrush(color);
Убедитесь придерживаться документированной договора:
высокого порядка байтов должен быть равен нулю.
Более безопасный альтернативы можно было бы использовать вместо RGB macro:
COLORREF color = RGB(0xFF, 0x0, 0xFF);
HBRUSH bhr = ::CreateSolidBrush(color);
В RGB
макро гарантирует, что полученная COLORREF
значение соответствует требуемой компоновке памяти.
Если вам нужно извлечь отдельные компоненты цветов из
COLORREF
(или
DWORD
) аргумента, вы можете использовать
GetRValue,
GetGValue и
GetBValue макросов:
DWORD dwCol = 0xFF00FF;
BYTE r = GetRValue(dwCol);
BYTE g = GetGValue(dwCol);
BYTE b = GetBValue(dwCol);
Хотя это работа, она вводит специфический для архитектуры код. В этот момент вы можете просто использовать начальный DWORD
вместо COLORREF
(как показано в первом абзаце).
Я нашел решение.
#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))));
Извините, нет. Если вы чувствуете настоятельную необходимость писать свои собственные макросы препроцессора, по крайней мере, делайте это правильно. В этом случае: ** Всегда ** завершать все выражение в круглых скобках. Конечно, повторное изобретательство колеса не очень полезно в любом случае (см. Мой ответ). – IInspectable
- 1. Какой редактор сценариев может кодировать цвета шестнадцатеричных значений цвета?
- 2. bytearray в python с использованием шестнадцатеричных значений
- 3. Передача шестнадцатеричных значений цвета с Xcode на Javascript
- 4. Regex Структуры цвета шестнадцатеричных
- 5. Java: изменение цвета фона с задержкой с использованием шестнадцатеричных значений в массиве
- 6. Сравнение шестнадцатеричных значений с awk
- 7. Преобразовать RGB для шестнадцатеричных значений цвета в PHP
- 8. Интерпретация шестнадцатеричных значений?
- 9. Хранение шестнадцатеричных значений
- 10. Зарисовка матрицы шестнадцатеричных кодов цвета
- 11. Массивы для хранения шестнадцатеричных значений
- 12. Преобразование шестнадцатеричных значений ASCII
- 13. Заменить несколько шестнадцатеричных значений
- 14. Сравнение двух шестнадцатеричных значений с использованием оператора if
- 15. Perl - выравнивание ширины шестнадцатеричных значений
- 16. Согласование шестнадцатеричных значений в C++
- 17. питон: строка шестнадцатеричных значений бинарного
- 18. Понимание изображения (его шестнадцатеричных значений)
- 19. расчесывание шестнадцатеричных значений, отправленных сокетом
- 20. чтение шестнадцатеричных значений из файла в с
- 21. Генерация случайных двухзначных шестнадцатеричных значений
- 22. Сравнение шестнадцатеричных и десятичных значений
- 23. Преобразование шестнадцатеричных значений в символы
- 24. Добавление массива шестнадцатеричных значений вместе
- 25. Почему ведущий «#FF» в шестнадцатеричных значениях цвета?
- 26. Xamarin набора вид цвета фон из шестнадцатеричных
- 27. Проверка имени RegExp с использованием шестнадцатеричных метасимволов
- 28. Отправка определенных шестнадцатеричных данных с использованием scapy
- 29. разбор n шестнадцатеричных цифр с использованием attoparsec
- 30. Lua: Чтение шестнадцатеричных значений из двоичного кода
MFC и GDI + различные библиотеки. Какой из них вы используете? – IInspectable