我对编程很新,我很难理解作为我的任务的一部分给我的代码。
我正在尝试使用此代码在程序中绘制位图
void Sprite::Draw(Canvas & c)
{
draw_impl(c);
c.DrawBitmap(50, 50, 50, 50, "H:\UserData\Desktop\ArcadeGame\ArcadeGame\Images\circle.bmp", 255, 0, 0);
}
我现在已经改变它,所以我使用的是完整路径而不是相对路径。但是错误仍然存在。
void WinCanvas::DrawBitmap(int x, int y, int w, int h, std::string filename, int r, int g, int b)
{
std::wstring stemp = std::wstring(filename.begin(), filename.end()); // convert to wide string
HBITMAP hBmp = (HBITMAP)LoadImage(NULL, stemp.c_str(), IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_LOADFROMFILE | LR_LOADTRANSPARENT);
if( hBmp == NULL )
{
DWORD err = GetLastError();
std::wstring errorMsg = L"Failed to LoadImage - '" + stemp + L"', error code (" + std::to_wstring((long long)err) + L")";
MessageBox(NULL, errorMsg.c_str(), L"WinCanvas::DrawBitmap()", MB_OK);
PostMessage(m_hWnd, WM_DESTROY, NULL, NULL); // Post a message to destroy (shutdown) the program
return;
.
}
我不确定我的图片位置来源是否有问题,或者我没有使用正确的整数正确绘制我的位图。
以下是使用的整数的声明
virtual void DrawBitmap(int x, int y, int w, int h, std::string filename, int r=0, int g=0, int b=0);
谢谢大家的帮助。我将代码更改为
c.DrawBitmap(50, 50, 50, 50, "H:\\UserData\\Desktop\\ArcadeGame\\ArcadeGame\\Images\\circle.bmp", 255, 0, 0);
但是,它现在出现错误代码0而不是2.如果我正确读取它,则错误消息表示无法加载字符串字符。
答案 0 :(得分:0)
错误代码2:ERROR_FILE_NOT_FOUND. 2 (0x2). The system cannot find the file specified.