1、使用当前窗口的ClientRect范围,收缩50后绘制矩形;
2、使用固定位置及宽高绘制矩形;
在拉动窗口调整范围时,第1个绘制的矩形没有正常更新,第2个绘制矩形正常更新。
问题总结,使用固定值绘制的矩形可以正常显示,动态变化的值则不能,原因何在?
Code: Select all
class TestDrawFrame : public wxFrame {
public:
TestDrawFrame();
~TestDrawFrame();
public:
void OnPaint(wxPaintEvent& event);
private:
wxDECLARE_EVENT_TABLE();
};
wxBEGIN_EVENT_TABLE(TestDrawFrame, wxFrame)
EVT_PAINT(TestDrawFrame::OnPaint)
wxEND_EVENT_TABLE()
TestDrawFrame::TestDrawFrame()
: wxFrame(nullptr, wxID_ANY, wxT("Draw Test"), wxDefaultPosition, wxSize(500, 300), wxDEFAULT_FRAME_STYLE|wxCLIP_CHILDREN)
{
SetMinSize(wxSize(100, 100));
}
TestDrawFrame::~TestDrawFrame()
{
}
void TestDrawFrame::OnPaint(wxPaintEvent& event)
{
wxBufferedPaintDC bufDC(this);
PrepareDC(bufDC);
bufDC.SetLogicalOrigin(0, 0);
bufDC.SetAxisOrientation(true, false);
bufDC.SetUserScale(1.0, 1.0);
bufDC.SetMapMode(wxMM_TEXT);
bufDC.SetBackgroundMode(wxBRUSHSTYLE_SOLID);
bufDC.Clear();
bufDC.SetBrush(*wxTRANSPARENT_BRUSH);
bufDC.SetPen(*wxRED_PEN);
/// draw rectangle with client rect.
wxRect rc = GetClientRect();
rc.Deflate(50, 50);
bufDC.DrawRectangle(rc);
/// draw rectangle with fixed position and size.
bufDC.SetPen(*wxBLUE_PEN);
bufDC.DrawRectangle(100, 100, 500, 400);
}