1

大家好,我是来打死马的。。

基本上我正在做的是将东西分配到地图上。

地图:一个 wxStaticBitmap 对象,背景由用户上传 炸弹(lol):一个 wxStaticBitmap 对象

我现在设法使用 wxMemoryDC + wxDC 将炸弹合并到地图上的任意位置。

然而,我完全坚持用鼠标设置“炸弹”。我想点击地图上的某个地方,不知何故,炸弹会落在我刚刚点击的位置。

我对 wxMouseEvent 和 EVT_MOTION(嗯,就像在顶部声明的宏)进行了尝试,显然它们只适用于 wxWindow 或 wxFrame。

我想知道如何可能通过 Connect() 将鼠标事件绑定到 staticbitmap 但我没有找到关于炸弹分配的正确用法......

4

3 回答 3

1

我发现的最好和最简单的解决方案是将自己的事件处理程序连接到 wxStaticBitmap,如下所示:

sb->Connect(wxID_ANY,wxEVT_MOTION,
    wxMouseEventHandler(MyFrame::OnMouse),NULL,this);
于 2016-01-04T10:41:25.223 回答
0

通常,最好创建一个单独的 wxPanel 作为框架的子级,然后将所有小部件创建为 wxPanel 的子级。这样一来,大多数事情都按您自然的预期工作,并且您遇到的问题更少。

于 2012-07-28T16:38:51.997 回答
0

你可以这样做来连接鼠标移动,鼠标左键向下和鼠标左键向上:

thiri = new wxStaticBitmap(this, wxID_ANY, wxImage(966, 680), /*image start point*/wxPoint(0,0), /* canvas size to display*/ wxSize(966, 680));

// mouse event on image
thiri->Connect( wxEVT_LEFT_DOWN, wxMouseEventHandler(Panel::OnMouseLeftDown), NULL, this );
thiri->Connect( wxEVT_MOTION, wxMouseEventHandler(Panel::OnMouseMove), NULL, this );
thiri->Connect( wxEVT_LEFT_UP, wxMouseEventHandler(Panel::OnMouseLeftUp), NULL, this);
于 2018-01-17T06:41:48.743 回答