MATLAB Answers

0

App Designer で作成した GUI において、マウスの操​作でグラフィックスオ​ブジェクトを動かすこ​とはできますか?

App Designer を使って GUI を作成しています。
Axes 上にあるグラフィックスオブジェクトをマウス操作で動かすようなアプリケーションを作りたいのですが、方法を教えてください。

1 Answer

Answer by MathWorks Support Team on 10 Oct 2019 at 4:00
Edited by MathWorks Support Team on 10 Oct 2019 at 8:12
 Accepted Answer

まず、基本的な処理の考え方については、以下の URL の内容が参考になります。
・マウスの動きに合わせてグラフィックスオブジェクトを移動させることはできますか?
上記は、通常の Figure(もしくはGUIDE)による構築方法を紹介していますが、R2018b からは、UIFigure での WindowButtonDown, WindowButtonMotion, WindowButtonUp コールバックがサポートされ、また R2019a 以降では、UIAxes の CurrentPoint プロパティがサポートされていますので、同様の内容を App Designer 上でも実装することが可能です。
添付の例は、App Designer にて作成した簡単なサンプル(app1.mlapp: R2019a にて作成)です。
実行すると、ラインプロットと Patch オブジェクトが表示されます。 マウスをドラッグ&ドロップすると、Patch の右端が動き、その値が表示されます。
主な作成のポイントは以下のものです。
1) UIFigure のコールバックで startupFcn、UIFigureWIndowButtonDowm、 UIFigureWIndowButtonMotion、UIFigureWIndowButtonUp コールバックを追加します。
2) startupFcn でライン描画、Patch 描画を行います。Patch のハンドルは、あらかじめプライベートプロパティとして登録しています。
3) UIFigureWindowButtonDown コールバックでは、以下の構文を使って、 UIFigureWIndowButtonMotion コールバックを設定します。
app.UIFigure.WindowButtonMotionFcn = createCallbackFcn(app, @UIFigureWindowButtonMotion, true);
※この記述は、WindowButtonMotionFcn コールバックを追加すると同時に記載された 74行目のコードを参考にしています。

  0 Comments

Sign in to comment.