Подвижный объект в wxFrame

#wxwidgets

#wxwidgets

Вопрос:

Я хотел бы нарисовать объект (например, круг / прямоугольник) на wxFrame и прикрепить к каждому объекту обработчик событий, чтобы при наведении мыши объект можно было переместить в другую позицию.

В настоящее время я не могу найти какие-либо заданные образцы или решение для этого. Я ценю любую помощь, связанную с этой проблемой.

Комментарии:

1. вероятно, это связано с тем, что вы не должны рисовать непосредственно на объекте wxFrame. вы должны рисовать на wxPanel

Ответ №1:

Как я уже упоминал, вы не должны рисовать на wxFrame. Вместо этого вы можете использовать wxPanel для рисования своих материалов. Вот ссылка с примером чертежа

Комментарии:

1. Спасибо, что поправили меня. Я могу рисовать несколько объектов circle на панели, но как я могу получить доступ к этим объектам, нарисованным на панели, чтобы я мог пометить обработчик событий, чтобы переместить его положение при выборе.

2. вы прикрепляете обработчик событий к панели и вместе с некоторой бухгалтерией (некоторый выбранный вами контейнер, содержащий текущий размер и положение вашего прямоугольника) вы знаете, какой объект выбран, и перемещаете его в соответствии с новым положением мыши

3. Я прикрепил здесь обработчик событий к панели, используя этот набор кодов: Panel1-> Connect(wxID_ANY, wxEVT_LEFT_DOWN, wxMouseEventHandler(TestFrame::OnLeftDClick), NULL,this ); Я в правильном направлении?

4. Похоже на то. Вам следует рассмотреть возможность использования другой перегрузки connect (той, в которой вам не нужно указывать wxID_Any), поскольку это «может» привести к нежелательному поведению. или же вы могли бы использовать «Connect(Panel1->getId(),wxEVT_LEFT_DOWN,wxMouseEventHandler(TestFrame::OnLeftDClick), NULL,this);

5. Я могу заставить обработчик работать, но не объект перемещать свою позицию при наведении курсора мыши и наведении курсора мыши на новую позицию.