2012-02-21 67 views
0

我想讀一個位圖圖像,並使用類wxBitmap與此構造: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)); 
} 

後,當我嘗試繪製位圖沒有什麼作品。

+0

什麼文件格式,你正在閱讀?它是RGB格式嗎?如果它是標準圖像格式(JPG,PNG,GIF等),則應使用內置的wxWidgets方法讀取圖像或查看wxBitmap :: LoadFile方法。 – Dan 2012-02-21 22:42:41

回答

0

而是一個位圖文件裏面戳和創建wxBitmap出原始數據的,使用wxImage加載該文件,然後將其轉換爲一個wxBitmap

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

圖像是RGB 555,但我需要操縱它像素每像素,所以我需要從該構造函數創建一個對象 – alkz 2012-02-22 20:39:31