wxToolBar 改变设备坐标
wxToolBar changing device coordinates
我正在使用鼠标在 MDIChildFrame 的客户区绘制二维形状。最近,我在框架中添加了一个 wxToolBar,当我现在在客户区绘制一个形状时,这些点似乎已经移动了工具栏的大小。想象一下,我用鼠标点击 (100,100) 并画一条线到 (150,150);但是,该线出现在 (75,75) 到 (125,125) 的某处。顺便说一句,wxMouseEvent GetPosition();向我报告 (100,100)。
删除工具栏可以解决问题,但是我想保留工具栏以便于选择工具。
我使用代码:
m_ToolBar=new wxToolBar(this, wxID_ANY);
m_ToolBar->AddTool() //
m_ToolBar->Realize();
this->SetToolBar(m_ToolBar);
任何想法将不胜感激。
您可以随时使用 wxWindow::GetClientAreaOrigin() to manually offset the coordinates by the toolbar height but normally this shouldn't be necessary, and if this doesn't happen with a "normal" frame but only happens with wxMDIChildFrame
it would be a bug in wxWidgets that should be reported as usual。
还建议不要在 wxFrame
本身上绘制,而是将 wxWindow
放入其中并在其上绘制。这也应该可以解决您的问题。
我正在使用鼠标在 MDIChildFrame 的客户区绘制二维形状。最近,我在框架中添加了一个 wxToolBar,当我现在在客户区绘制一个形状时,这些点似乎已经移动了工具栏的大小。想象一下,我用鼠标点击 (100,100) 并画一条线到 (150,150);但是,该线出现在 (75,75) 到 (125,125) 的某处。顺便说一句,wxMouseEvent GetPosition();向我报告 (100,100)。
删除工具栏可以解决问题,但是我想保留工具栏以便于选择工具。
我使用代码:
m_ToolBar=new wxToolBar(this, wxID_ANY);
m_ToolBar->AddTool() //
m_ToolBar->Realize();
this->SetToolBar(m_ToolBar);
任何想法将不胜感激。
您可以随时使用 wxWindow::GetClientAreaOrigin() to manually offset the coordinates by the toolbar height but normally this shouldn't be necessary, and if this doesn't happen with a "normal" frame but only happens with wxMDIChildFrame
it would be a bug in wxWidgets that should be reported as usual。
还建议不要在 wxFrame
本身上绘制,而是将 wxWindow
放入其中并在其上绘制。这也应该可以解决您的问题。