マウスの動きに合わせ​てグラフィックスオブ​ジェクトを移動させる​ことはできますか?

42 visualizaciones (últimos 30 días)
MathWorks Support Team
MathWorks Support Team el 25 de Oct. de 2013
Editada: MathWorks Support Team el 18 de En. de 2024
Figure 上に描画されているラインや Patch などのオブジェクトをマウスでドラッグし、移動させる方法を教えてください。

Respuesta aceptada

MathWorks Support Team
MathWorks Support Team el 18 de En. de 2024
Editada: MathWorks Support Team el 18 de En. de 2024
マウスでグラフィックスオブジェクトを移動するには、Figure オブジェクトの以下のコールバック関数を使用します。
WindowButtonDownFcn
: Figure上でマウスを押した時に実行されるコールバック関数
WindowButtonMotionFcn
: Figure 上でマウスを動かした時に実行されるコールバック関数
WindowButtonUpFcn
: Figure 上でマウスを放した時に実行されるコールバック関数
これらの各コールバック関数を次のように使用します。
1. マウスが押されたら、WindowsButtonMotionFcn を設定する(WindowButtonDownFcn のコールバック)
2. マウスの移動中は、マウスの現在値を取得し、オブジェクトの位置を逐次変更する(WindowButtonMotionFcn のコールバック)
3. マウスを放したら、WindowsButtonMotionFcn を削除する(WindowButtonUpnFcn のコールバック)
以下のプログラムは、Patch オブジェクトをマウスのドラッグにより移動する例です。
function test1
% Patch オブジェクトをマウスで動かすサンプル例
% Figure に各種コールバックを設定
figure('WindowButtonDownFcn',@myBDCallback,'WindowButtonUpFcn',@myBUCallback)
axis([-1,2,-1,2,-1,2]);
xlabel('x'), ylabel('y'), view(3);
h = patch([-1,2,2,-1],[-1,-1,2,2],[1,1,1,1],'b'); % 面を表示
function myBDCallback(src,eventdata)
% WindowButtonDownFcn
% マウスを押したときのコールバック関数
set(src,'WindowButtonMotionFcn',@myBMCallback);
function myBMCallback(src,evnt)
% WindowButtonMotionFcn
% マウスを動かしたときのコールバック関数
Cp = get(gca,'CurrentPoint'); % 座標軸上のマウスの位置を取得
Zf = Cp(1,3); % 前面側の Z 軸上の位置
Zb = Cp(2,3); % 背面側の Z 軸上の位置
Zp = Zf+(Zb-Zf)/2; % Z軸上のマウス位置
set(h,'Zdata',repmat(Zp,4,1)) % Patch の高さを変更
drawnow % 強制描画
end
end
function myBUCallback(src,evantdata)
% WindowButtonUpFcn
% マウスを放したときのコールバック関数
set(src,'WindowButtonMotionFcn','');
end
end
各種コールバックの詳細については、以下の URL をご覧下さい。
・コールバック — ユーザー アクションへのプログラムされた応答
MATLABインスタンスで以下のコマンドを実行し、リリース固有のドキュメントにアクセスしてください:
web(fullfile(docroot, 'matlab/creating_plots/callbacks-programmed-response-to-user-action.html'))
現在のリリースに関する必要な情報は以下のリンクから検索してください:

Más respuestas (0)

Categorías

Más información sobre 対話型コントロールとコールバック en Help Center y File Exchange.

Productos


Versión

R2009b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!