でGUIを構築していMATLAB
ます。この GUI にはいくつかの異なるaxes
オブジェクトがあります。軸の 1 つでzoom
ツールを使用します (Figure のツールバーでアクティブ化)。別の軸オブジェクトで、ズームを無効にしました:
setAllowAxesZoom(zoom_handle,axes_handle,false)
...そして、いくつかのクリック可能なオブジェクトをプロットしました:
text(x,y,string,'buttondownfcn',{@func_handle, value});
これはすべてうまく機能します...マウスがズーム不可能なプロットにある場合、通常の矢印カーソルが表示され、クリックまたはクリックアンドドラッグしてもズームは発生しません。
でも!解決したい不便な問題があります。ズーム ツールをアクティブにbuttondownfcn
すると、テキスト オブジェクトをクリックしてもコールバックがトリガーされないことがわかりました。今のところ、ツールバーに戻ってズーム モードを切り替える必要があります。マウスを異なる軸間で移動し、適切な動作をプログラムでアクティブにするだけです。
これを回避する最善の方法は何ですか? マウスが軸の 1 つに入ったときに使用できるコールバックはありますか? その場合、そのコールバックでズーム ツールをオンにし、対応する「イベントを終了」コールバックで再びオフにすることができます。または、ズーム不可能なプロットでマウスクリックイベントを伝播して、トリガーする適切なコールバックを見つける方法はありますか? または、私が考慮していない他の可能性はありますか?
編集:これを機能させました。私は解決策を投稿しましたが、他のシナリオでよりうまく機能し、より堅牢であるなど、他の解決策にも興味があります.