マウス クリックをグループの親オブジェクトに渡す
この例では、オブジェクトのグループがマウス クリックを親オブジェクトに渡す方法を説明します。親オブジェクトはグループ内の全オブジェクトに作用します。
目的と設計
オブジェクト グループのいずれかのメンバーを 1 回マウス クリックして、グループ内のすべてのオブジェクトに作用を及ぼす 1 つのボタンダウン コールバックを実行する場合を考えます。
グループに追加するグラフィックス オブジェクトを定義します。
グラフィックス オブジェクトの親オブジェクトとして
hggroup
オブジェクトを割り当てます。任意のオブジェクトがクリックされたときに実行する関数を定義し、その関数ハンドルを
hggroup
オブジェクトのButtonDownFcn
プロパティに割り当てます。マウス クリックをオブジェクトの親に渡せるように、グループ内のすべてのオブジェクトの
HitTest
プロパティをoff
に設定します。
オブジェクト階層とキー プロパティ
この例では、次のオブジェクト階層を使用します。
MATLAB コード
2 つの関数をもつファイルを作成します。
pickPatch
— グラフィックス オブジェクトを作成するメイン関数groupCB
—hggroup
コールバックのローカル関数
関数 pickPatch
は 3 つの patch オブジェクトを作成し、hggroup
オブジェクトの子オブジェクトにします。各パッチの HitTest
プロパティを off に設定すると、マウス クリックが親オブジェクトに指示されます。
function pickPatch figure x = [0 1 2]; y = [0 1 0]; hGroup = hggroup('ButtonDownFcn',@groupCB); patch(x,y,'b',... 'Parent',hGroup,... 'HitTest','off') patch(x+2,y,'b',... 'Parent',hGroup,... 'HitTest','off') patch(x+3,y,'b',... 'Parent',hGroup,... 'HitTest','off') end
groupCB
コールバックは hggroup
に含まれるすべてのオブジェクトに作用します。コールバック関数 groupCB
は、それに渡されるコールバック ソース引数 (src
) を使用して、patch オブジェクトのハンドルを取得します。
コールバック ソース引数 (hggroup
オブジェクトへのハンドル) を使用することで、グローバル データを作成したりコールバックに追加の引数を渡したりする必要がなくなります。
いずれかのパッチを左クリックすると、3 つの全パッチの面の色がランダムな RGB カラー値に変わります。
function groupCB(src,~) s = src.Children; set(s,'FaceColor',rand(1,3)) end
コールバック関数についての詳細は、グラフィックス オブジェクトのコールバックの作成を参照してください。