Main Content

特殊オブジェクトの識別子

特殊オブジェクトへのハンドルの取得

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'

gcfgca は、Figure と座標軸の現在のハンドルを取得するには便利ですが、コード ファイルではあまり役に立ちません。特に、コードが MATLAB 上でレイヤー化されたアプリケーションの一部で、ハンドルの値を変更する可能性のあるユーザー アクションを把握していない場合にはこのことがあてはまります。

保護するグラフィックス オブジェクトのハンドルにユーザーがアクセスできないようにする方法については、Figure および座標軸へのアクセスの禁止を参照してください。

コールバック オブジェクトとコールバック Figure

通常、コールバック関数には、コールバックを定義するオブジェクトに関する情報またはコールバックを実行するオブジェクトを含む Figure が必要です。これらのオブジェクトを取得するには、以下の簡易関数を使用します。

  • gcbo — ルートの CallbackObject プロパティの値を返します。このプロパティにはコールバックを実行中のオブジェクトのハンドルが格納されます。gcbo はオプションで、コールバック オブジェクトを含む Figure のハンドルを返します。

  • gcbf — コールバック オブジェクトを含む Figure のハンドルを返す。

MATLAB は CallbackObject プロパティの値を、現在実行されているコールバックと同期し続けます。実行されているコールバックに別のコールバックが割り込んだ場合、MATLAB は CallbackObject プロパティの値を更新します。

CreateFcn および DeleteFcn のコールバック関数を記述する場合は、コールバック オブジェクトを参照するために必ず gcbo を使用してください。

コールバック関数の記述についての詳細は、グラフィックス オブジェクトのコールバックの作成を参照してください。