2012-08-25 41 views
0

我的名字是米格爾,我試圖讓每個單一像素在一個.bmp,但到目前爲止,當我初始化位圖時,它沒有得到任何值,所以我想我已經初始化它錯了。這是我當前的代碼:(摘錄)C++ GDI位圖不想加載

Bitmap *PerlinImage; 

void OpenPerlinFile() 
{ 
    PerlinImage = new Bitmap((WCHAR*)"C:\\Users\\Utilizador\\Documents\\Visual Studio 2012\\Projects\\Cube3D\\IDTech_JavaOpenGL_Port\\perlinNoise.bmp"); 
} 

// END 

void Initialize(void) 
{ 
    OpenPerlinFile(); 

    Unit tempunit; 
    Color color; 

    int ccount = 0; 
    for (int h = 0; h != PerlinImage->GetHeight(); h++) 
...... 

現在,你可以看看我的代碼,也許預測什麼,我做錯了。

謝謝

米格爾·彼得森

+0

我知道你可能認爲這很有禮貌,但你的名字真的與問題無關。如果您想讓我們知道,請更改您的用戶名。 – Cubic

回答

0

調用GdiplusStartup是必需的。 同時檢查PerlinImage的值,如果它不是NULL,那麼你可以用PerlinImage-> GetLastStatus()檢查錯誤。如果PerlinImage爲NULL,那麼您可能會忘記調用GdiplusStartup。

1

假設你已經得到了正確的路徑,如下:

PerlinImage = new Bitmap((WCHAR*)"C:\\Users\\Utilizador\\Documents\\Visual Studio 2012\\Projects\\Cube3D\\IDTech_JavaOpenGL_Port\\perlinNoise.bmp"); 

應該是:

PerlinImage = new Bitmap(_T("C:\\Users\\Utilizador\\Documents\\Visual Studio 2012\\Projects\\Cube3D\\IDTech_JavaOpenGL_Port\\perlinNoise.bmp")); 

或者,沒有幫手宏:

PerlinImage = new Bitmap(L"C:\\Users\\Utilizador\\Documents\\Visual Studio 2012\\Projects\\Cube3D\\IDTech_JavaOpenGL_Port\\perlinNoise.bmp"); 
+0

路徑是正確的,我試圖改變,如你所說,但它仍然是空的。 –

+0

@ user1492812嗯,我假設你已經調用了'GdiplusStartup'。我唯一能想到的另一件事是BMP是GDI +不理解的格式。 –