WxBitmap, не может правильно видеть изображение - PullRequest
0 голосов
/ 22 февраля 2012

Я пытаюсь прочитать растровое изображение и использовать класс wxBitmap с этим конструктором:

wxBitmap (const char bits[], int width, int height, int depth=1)

Но я не могу понять, почему, когда я вызываю метод:

wxDC::DrawBitmap (const wxBitmap &bitmap, wxCoord x, wxCoord y, bool useMask=false)

изображение полностью искажено.

Вот код:

wxBitmap*
MyFrame::readImage(const char* filename, int x, int y)
{
    char* bits = new char[x*y];
    char byte;
    long i = 0;


    std::ifstream f(filename, std::ios::binary);
    f.seekg(54, std::ios::beg);    // skip header

    while(i < x*y)  {
        f.read((char *)&byte, sizeof(char));
        bits[i++] = byte;
    }

    f.close();

    return (new wxBitmap(bits, x, y) );
}

После этого, когда я пытаюсь нарисовать растровое изображение, ничего не получается.

1 Ответ

0 голосов
/ 22 февраля 2012

Вместо того, чтобы вставлять файл растрового изображения и создавать wxBitmap из необработанных данных, используйте wxImage для загрузки файла, а затем преобразуйте его в wxBitmap:

wxBitmap*
MyFrame::readImage(const char* filename)
{
    wxImage image(wxString(filename));
    return new wxBitmap(image);
}
...