MinGW wxWidgets – Draw

LastUpdate 2005.08.20 Yoshiaki.Ueda

[目次へ戻る]


 wxWidgetsで、ウインドウに直接描画する方法を試みる。



ウインドウに描画する


一体どこでどのように書けばいいか


 wxPaintEventに反応して、wxDCを使って書けばいいらしい・・


wxPaintEventを受けるために 

クラス定義(*.h)

class MyWindow : public wxFrame

{

....

private:

void OnPaint(wxPaintEvent& event);

DECLARE_EVENT_TABLE()

};

イベントテーブル(*.cpp)

BEGIN_EVENT_TABLE(MyWindow, wxFrame)

EVT_PAINT(MyWindow::OnPaint)

END_EVENT_TABLE()

実装(*.cpp)

void MyWindow::OnPaint(wxPaintEvent& event)

{

wxPaintDC dc(this);

dc.DrawLine(10,10,200,200); //直線が描ける。

}


描 画

  上記の如く。


終了できなくなる


 イベントテーブルにwxPaintEventを登録して、イベントが飛んでくるように したとたん、ウィンドウが閉じなく、アプリケーションが終了できなくなった。

 OnPaintが空のままでは、そのようになるらしい。 デバイスコンテキストを生成して、破棄するだけの、下記の1行を付け足すと、その現象は無くなった。


終了できない

void MyWindow::OnPaint(wxPaintEvent& event)

{

}

終了できる

void MyWindow::OnPaint(wxPaintEvent& event)

{

wxPaintDC dc(this);

}



スケーリング


 wxDC::SetUserScaleでスケーリングできる。