AppDesignerで作成したFigureウィンドウの回転、パニング、ズーム、データヒントについて
7 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
AppDesignerで作成したFigureウィンドウ(座標軸ウィンドウ)にい表示された3Dプロットデータを回転・パニング・ズームをさせたりする場合は、ウィンドウ右上の座標軸ツールバーから操作するかと思いますが、これをマウスで操作できるようにしたいです。コールバック等で上手く再現可能でしょうか?
※例えば、マウス左クリックを維持した状態でマウスを動かすと回転・マウスホイールを動かすとズーム操作、右クリックを維持した状態でマウスを動かすとパニング、いわゆる3DCAD操作と同じような操作感といったようなイメージ
また、AppDesignerで作成したアプリをスタンドアロン化すると、外部データを読み込んでプロットした際のデータヒントが表示されなくなってしまったのですが、対処法等ありますでしょうか?
0 Commenti
Risposte (1)
交感神経優位なあかべぇ
il 27 Set 2023
ctrlなどのキーを押したときに、パン操作にするなどであれば、axesのInteractionsとuifigureのWindowKeyPressFcnを組み合わせることで、それっぽい操作にできました。
下記サンプルは、デフォルトは回転とズーム操作のみですが、ctrlを押してドラックしたらパン操作に切り替わります。
% テキトーにサンプルデータ表示
hfigure = uifigure();
haxes = axes(hfigure);
data = magic(5);
bar3(haxes,data);
set(haxes, 'Interactions', [rotateInteraction,zoomInteraction]); % デフォルトは、回転とズーム操作
haxes.Toolbar.Visible = false; % ツールバーは使用しないので非表示
hfigure.WindowKeyPressFcn = @(src, event) KeyPressFcn(event, hfigure, haxes); % キーボード入力のコールバック
hfigure.WindowKeyReleaseFcn = @(src,event) KeyReleaseFcn(event, hfigure, haxes); % キーを離した時のコールバック
function KeyPressFcn(event, hfigure, haxes)
if length(event.Modifier) == 1
switch event.Modifier{1}
case 'control'
haxes.Interactions = panInteraction; % ctrlキーを押したとき、パン操作
end
end
hfigure.WindowKeyPressFcn = ''; % 連続してコールバックしないように削除(Axesが動かなくなる)
end
function KeyReleaseFcn(event, hfigure, haxes)
if isempty(event.Modifier)
haxes.Interactions = [rotateInteraction,zoomInteraction]; % 押してるキーがなくなったら、デフォルトに戻す。
hfigure.WindowKeyPressFcn = @(src, event) KeyPressFcn(event, hfigure, haxes);
end
end
アプリのスタンドアロンについては、すみませんが、私は分かりません。
0 Commenti
Vedere anche
Categorie
Scopri di più su Interaction Control in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!