Произвольный цвет заливки для 8-битной DIB-секции
От: Xo  
Дата: 30.11.04 11:32
Оценка:
Добрый день!

Задача следующая: на 8-битном битмапе рисовать различные геометрические фигуры
с заданным цветом (оттенком) заливки. Реализую это следующим образом:

    /* BITMAPINFO structure */
    BITMAPINFO *AdibBMI = (BITMAPINFO *)malloc( sizeof( BITMAPINFO ) + sizeof( RGBQUAD ) * 0xff );
    AdibBMI->bmiHeader.biSize        = sizeof( BITMAPINFO );
    AdibBMI->bmiHeader.biWidth       = 200;
    AdibBMI->bmiHeader.biHeight      = 200;
    AdibBMI->bmiHeader.biPlanes      = 1;
    AdibBMI->bmiHeader.biBitCount    = 8;
    AdibBMI->bmiHeader.biCompression = BI_RGB;

    for( int i = 0; i < 0x100; i++ ) {
        RGBQUAD quad = { i, i, i, 0 };
        AdibBMI->bmiColors[i] = quad;
    }

    /* DIB section */
    HDC AdibDC = CreateCompatibleDC( NULL );
    HBITMAP AdibBitmap = CreateDIBSection( AdibDC, AdibBMI, DIB_PAL_COLORS, (void **) &AdibBits, NULL, 0 );

    SelectObject( AdibDC, AdibBitmap );

    SelectObject( AdibDC, GetStockObject( WHITE_BRUSH ) );
    Ellipse( AdibDC, 0, 0, 20, 10 );

    free( AdibBMI );
    DeleteDC( AdibDC );
    DeleteObject( AdibBitmap );


Заливка всегда получается черной.
В чем может быть проблема?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.