На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
  
> Динамический битмап
    У меня на форме динамически формируется маленький битмап. Цвет для него я выбираю с помощью стандартного диалога цветов. Но битмап рисуется совсем не тем цветом, что выбран (например, голубым вместо желтого).
    Может, кто-нибудь, знает, почему? Вот код:
    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 у меня не получается.
      ГЫ, желтый цвет - обратный голубому(т.е. AQUA):) Понял прикол??? 0x00ff00ff - желтый! 0x0000ff00 - голубой (цвет:)
        Твой совет, хотя и не совсем верный, навел на правильные мысли.
        Дело в том, что вместо желтого (0x00FFFF00) получается не синий, как ты предположил (0x000000FF), а именно голубой (0x0000FFFF)!
        То же для, например, красного цвета - д.б. 0x00FF0000, а получается синий 0x000000FF.
        Сначала у меня долго не получалось понять, в чем фишка, а потом меня осенило!!!
        Оказывается, надо взять 2 младших разряда и 2 старших (если смотреть на число как на 24-битовое) и поменять их местами! И все получилось! ;D
        Не пойму только, какого... извините, в мелкософте так через w сделано! Зачем? И почему в доках ни слова?!!! ???
          Ну ты мен понял:) ... Просто, имхо, надо брать и "переворачивать" число... Я с этим сам сталкивался ... Я был тоже поражен :o. Но факт есть факт!
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0175 ]   [ 16 queries used ]   [ Generated: 2.05.24, 06:40 GMT ]