2013-10-14 57 views
0

我想在C++中使用wxWidgets来使用DrawText绘制一个字符串,表示“游戏结束”为我的游戏,并且还显示结束游戏得分这是一个int变量。WxWidgets DrawText在屏幕上打印变量

这里是我的代码:

void CFunction::Draw(wxDC &dc) 
{ 
    if (mGame != NULL && mGame->IsGameOver()) 
    { 

     wxFont font(75, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false); 
     dc.SetFont(font); 
     dc.SetTextForeground(wxColour(221, 34, 34)); 
     dc.DrawText(L"GAME OVER!", 250, 100); 
    } 
} 

现在它打印 “GAME OVER!”但我希望它打印存储在mGame-> GetScore()中的变量,例如,如果在游戏结束时得分为10,它应该显示在屏幕上:

“GAME OVER!Score:10”

任何人都知道如何使用wxDraw在wxWidgets中做到这一点?

回答

1

我想通了:

if (mGame != NULL && mGame->IsGameOver()) 
{ 
    wstringstream str; 
    str << L"GAME OVER! YOUR SCORE: " << mGame->GetScore() << ends; 

    wxFont font(45, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false); 
    dc.SetFont(font); 
    dc.SetTextForeground(wxColour(255, 102, 0)); 
    dc.DrawText(str.str().c_str(), 300, 200); 
} 

你必须使用wstringstream,并用它在你的变量传递明显。

+0

你可以用任何你想要的方式来构造你的字符串,但是你需要以某种方式构造它。 'wstringstream'是一个完全有效的选择(虽然我可能只使用'wostringstream',因为你只写入它),但更快,也许更可读的方式可能是使用'wxString :: Format()'。 –