【问题标题】:c++ GDI Bitmap doesn't want to loadc ++ GDI位图不想加载
【发布时间】:2012-08-21 00:47:17
【问题描述】:

我的名字是 Miguel,我试图在一个 .bmp 中获取每个像素,但到目前为止,当我初始化位图时,它没有得到任何值,所以我想我已经将它初始化错了.这是我当前的代码:(片段)

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++)
......

现在,你能看看我的代码,或许可以预测我做错了什么。

谢谢

米格尔·彼得森

【问题讨论】:

  • 我知道你可能认为这很礼貌,但你的名字真的与问题无关。如果您想让我们知道,请更改您的用户名。

标签: c++ bitmap gdi nullptr


【解决方案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");

【讨论】:

  • 路径是对的,我按你说的改了,还是为空。
  • @user1492812 好吧,我假设您已致电 GdiplusStartup。我唯一能想到的另一件事是 BMP 是 GDI+ 无法理解的格式。
【解决方案2】:

需要调用 GdiplusStartup。 还要检查 PerlinImage 的值,如果它不为 NULL,那么您可以使用 PerlinImage->GetLastStatus() 检查错误。如果 PerlinImage 为 NULL,那么你可能会忘记调用 GdiplusStartup。

【讨论】:

    猜你喜欢
    • 2011-09-05
    • 2012-05-10
    • 2017-09-09
    • 2014-07-11
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 2010-12-11
    • 2016-06-15
    相关资源
    最近更新 更多