wxWidgets отображает растровое изображение из 8-битного массива - PullRequest
2 голосов
/ 09 сентября 2010

У меня есть функция, генерирующая массив, который мне нужно нарисовать на экране.Массив имеет форму 8-битного изображения в градациях серого.Как правильно вывести массив на экран?У меня есть рабочая версия этого приложения с кодом Win32, который использует StretchDIBits для рисования изображения.У меня вопрос, могу ли я / как я могу сделать нечто подобное в wxWidgets?

Соответствующий рабочий код win32:


screen = LCD_image( calcs[slot].cpu.pio.lcd ) ;
        if (StretchDIBits(  hdc,
                            rc.left, rc.top, rc.right - rc.left,  rc.bottom - rc.top,
                            0, 0, lcd->width, 64,
                            screen,
                            bi,
                            DIB_RGB_COLORS,
                            SRCCOPY) == 0) {
                            printf("error in SetDIBitsToDevice\n");
                        }


        if (BitBlt( hdcDest, rc.left, rc.top, rc.right - rc.left,  rc.bottom - rc.top,
            hdc, 0, 0, SRCCOPY ) == FALSE) printf("Bit blt failed\n");

Соответствующий нерабочий код wxWidgets:

unsigned char *screen;
screen = LCD_image( calcs[gslot].cpu.pio.lcd ) ;
wxImage screenImage(rc.GetWidth(), rc.GetHeight(), screen, true);
wxBitmap bmpBuf(screenImage);
wxMemDC.SelectObject(bmpBuf);
wxDCDest->Blit(drawPoint.x, drawPoint.y, rc.GetWidth(), rc.GetHeight(), &wxMemDC, 0, 0);
wxMemDC.SelectObject(wxNullBitmap);

1 Ответ

0 голосов
/ 09 сентября 2010

Формат, ожидаемый wxImage ctor, представляет собой массив данных RGB, и ваша функция LCD_image() не возвращает их в этом формате.

...