このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
特殊オブジェクトの識別子
特殊オブジェクトへのハンドルの取得
MATLAB® には、重要なオブジェクト ハンドルの取得が必要なときに、それらを返す関数が用意されています。
以下のオブジェクトがあります。
現在の Figure — グラフィックス コマンドの現在のターゲットである Figure のハンドル。
現在の座標軸 — グラフィックス コマンドのターゲットである現在の Figure に含まれる座標軸のハンドル。
現在のオブジェクト — 選択されているオブジェクトのハンドル。
コールバック オブジェクト — コールバックを実行中のオブジェクトのハンドル。
コールバック Figure — コールバック オブジェクトの親オブジェクトである Figure のハンドル。
現在の Figure、座標軸とオブジェクト
MATLAB グラフィックスの重要な概念は、現在のオブジェクトという概念です。現在のオブジェクトであるとは、オブジェクトがそのタイプのオブジェクトに影響するすべてのアクションのターゲットであるということです。常に 3 つのオブジェクトが現在のオブジェクトとして指定されています。
"現在の Figure"。グラフィックス出力を受け取るように指定されているウィンドウです。
"現在の座標軸"。プロット関数がグラフを表示する座標軸です。
"現在のオブジェクト"。最も新しく作成または選択されたオブジェクトです。
MATLAB は、これらのオブジェクトに対応する 3 つのハンドルを先祖の対応するプロパティ リストに格納します。
これらのプロパティからキーとなるオブジェクトのハンドルを得ることができます。
hRoot = groot; hFigure = hRoot.CurrentFigure; hAxes = hFigure.CurrentAxes; hobj = hFigure.CurrentObject;
簡易関数
次のコマンドは、プロパティ クエリの省略形表記です。
gcf
— ルートのCurrentFigure
プロパティの値を返すか、現在の Figure がない場合に、Figure を作成します。HandleVisibility
プロパティがoff
に設定された Figure は、現在の Figure にはなれません。gca
— 現在の Figure のCurrentAxes
プロパティの値を返すか、現在の座標軸がない場合に、座標軸を作成します。HandleVisibility
プロパティがoff
に設定された座標軸は、現在の座標軸にはなれません。gco
— 現在の Figure のCurrentObject
プロパティの値を返します。
これらのコマンドは、オブジェクトのハンドルを必要とする関数の入力引数として使用します。たとえば、line オブジェクトをクリックして、それから gco
を使って、そのハンドルを set
コマンドに指定することができます。
set(gco,'Marker','square')
または、axes オブジェクトをクリックして座標軸のプロパティを設定します。
set(gca,'Color','black')
現在の座標軸内のすべてのグラフィックス オブジェクトのハンドル (非表示のハンドルを除く) を取得できます。
h = get(gca,'Children');
次に、オブジェクトのタイプを決めます。
get(h,'Type')
ans = 'text' 'patch' 'surface' 'line'
gcf
と gca
は、Figure と座標軸の現在のハンドルを取得するには便利ですが、コード ファイルではあまり役に立ちません。特に、コードが MATLAB 上でレイヤー化されたアプリケーションの一部で、ハンドルの値を変更する可能性のあるユーザー アクションを把握していない場合にはこのことがあてはまります。
保護するグラフィックス オブジェクトのハンドルにユーザーがアクセスできないようにする方法については、Figure および座標軸へのアクセスの禁止を参照してください。
コールバック オブジェクトとコールバック Figure
通常、コールバック関数には、コールバックを定義するオブジェクトに関する情報またはコールバックを実行するオブジェクトを含む Figure が必要です。これらの関数は、ハンドルを取得するために以下の簡易関数を使用します。
gcbo
— ルートのCallbackObject
プロパティの値を返します。このプロパティにはコールバックを実行中のオブジェクトのハンドルが格納されます。gcbo
はオプションで、コールバック オブジェクトを含む Figure のハンドルを返します。gcbf
— コールバック オブジェクトを含む Figure のハンドルを返す。
MATLAB は CallbackObject
プロパティの値を、現在実行されているコールバックと同期し続けます。実行されているコールバックに別のコールバックが割り込んだ場合、MATLAB は CallbackObject
プロパティの値を更新します。
CreateFcn
および DeleteFcn
のコールバック関数を記述する場合は、コールバック オブジェクトを参照するために必ず gcbo
を使用してください。
コールバック関数の記述についての詳細は、グラフィックス オブジェクトのコールバックの作成を参照してください。