0
使用位圖
我在書中給出的「跨平臺GUI編程wxWidgets的」下面的代碼,我正在讀:在wxWidgets中
BEGIN_EVENT_TABLE(MyWindow, wxWindow)
EVT_ERASE_BACKGROUND(MyWindow::OnErase)
END_EVENT_TABLE()
void MyWindow::OnErase(wxEraseEvent& event)
{
wxClientDC* clientDC = NULL;
if (!event.GetDC())
clientDC = new wxClientDC(this);
wxDC* dc = clientDC ? clientDC : event.GetDC() ;
wxSize sz = GetClientSize();
wxEffects effects;
effects.TileBitmap(wxRect(0, 0, sz.x, sz.y), *dc, m_bitmap);
if (clientDC)
delete clientDC;
}
此代碼不顯示我該怎麼辦加載一個位圖,這樣後谷歌一些搜索,我想出了:
wxBitmap m_bitmap;
bool result = m_bitmap.LoadFile("D:\image.png", wxBITMAP_TYPE_PNG);
但這返回false
這意味着功能LoadFile
是無法加載文件中的布爾結果。我也嘗試加載一個失敗的BMP文件。
我遇到的另一個問題是wxEffects
被編譯器警告標記爲不贊成使用。
你可以評論爲什麼'MyApp :: OnInit()'是一個覆蓋函數嗎?例如。即使我刪除了'虛擬',那麼程序看起來仍然工作得很好。 – cpx
這是C++,'virtual'是可選的。如果可以,我推薦使用C++ 11'override'。 –