Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.119.105.239] |
|
Сообщ.
#1
,
|
|
|
У меня на форме динамически формируется маленький битмап. Цвет для него я выбираю с помощью стандартного диалога цветов. Но битмап рисуется совсем не тем цветом, что выбран (например, голубым вместо желтого).
Может, кто-нибудь, знает, почему? Вот код: HBITMAP hb; BITMAPINFO bi = {sizeof(BITMAPINFOHEADER), 16, 16, 0, 32,BI_RGB, 0, 0, 0, 0, 0}; hb = (HBITMAP)::CreateDIBitmap(dc.GetSafeHdc(),&bi.bmiHeader,CBM_INIT,bits, &bi, DIB_PAL_COLORS); m_bitmap.SetBitmap(hb); Выше я определяю массив bits, который состоит из элементов COLORREF. А настроить структуру BITMAPINFO для типа BI_BITFIELD у меня не получается. |
Сообщ.
#2
,
|
|
|
ГЫ, желтый цвет - обратный голубому(т.е. AQUA) Понял прикол??? 0x00ff00ff - желтый! 0x0000ff00 - голубой (цвет:)
|
Сообщ.
#3
,
|
|
|
Твой совет, хотя и не совсем верный, навел на правильные мысли.
Дело в том, что вместо желтого (0x00FFFF00) получается не синий, как ты предположил (0x000000FF), а именно голубой (0x0000FFFF)! То же для, например, красного цвета - д.б. 0x00FF0000, а получается синий 0x000000FF. Сначала у меня долго не получалось понять, в чем фишка, а потом меня осенило!!! Оказывается, надо взять 2 младших разряда и 2 старших (если смотреть на число как на 24-битовое) и поменять их местами! И все получилось! ;D Не пойму только, какого... извините, в мелкософте так через w сделано! Зачем? И почему в доках ни слова?!!! ??? |
Сообщ.
#4
,
|
|
|
Ну ты мен понял:) ... Просто, имхо, надо брать и "переворачивать" число... Я с этим сам сталкивался ... Я был тоже поражен . Но факт есть факт!
|