Figure および座標軸へのアクセスの禁止
アクセスを禁止する理由
場合によっては、特定の Figure または座標軸がグラフィックス出力のターゲットにならないようにすることが重要になるときがあります。つまり、特定の Figure または座標軸を、gcf や gca から返される現在の Figure や座標軸にしないことが重要です。
ユーザー インターフェイスを実装するコントロールを含む Figure へのアクセスを禁止する場合があります。あるいは、座標軸へのアクセスを禁止する、すなわちアプリケーション プログラムの一部をアプリケーションでのみアクセスさせたい場合があります。
アクセスを禁止する方法
可視のハンドルのリストから特定の Figure または座標軸のハンドルを削除して、それらの Figure または座標軸が MATLAB® 関数のターゲットにならないようにします。
ハンドルの可視性をコントロールするプロパティには、HandleVisibility と ShowHiddenHandles の 2 つがあります。
HandleVisibility は、すべてのグラフィックス オブジェクトがもつプロパティです。このプロパティは、次の 3 つの値でオブジェクトのハンドルの可視性をコントロールします。
ハンドルの可視性により影響を受けるプロパティ
オブジェクトの HandleVisibility が 'callback' または 'off' に設定されている場合、以下のようになります。
オブジェクトのハンドルは、その親の
Childrenプロパティには現れません。Figure は、ルートの
CurrentFigureプロパティには表示されません。座標軸は、その座標軸を含む Figure の
CurrentAxesプロパティには表示されません。グラフィックス オブジェクトは、Figure の
CurrentObjectプロパティには表示されません。
ハンドルの可視性により影響を受ける関数
子オブジェクトの親のリストにハンドルが表示されない場合、オブジェクト階層の検索によってハンドルを取得する関数では、ハンドルを返すことはできません。このような関数には get、findobj、gca、gcf、gco、newplot、cla、clf および close があります。
gca と gcf が返す値
ハンドルが非表示の Figure が画面の最前面にあるけれども、その背後にハンドルが可視のいくつかの Figure がスタックされている場合、gcf はスタック内で最も前面にある、ハンドルが可視の Figure を返します。これと同じ動作が gca でも行われます。ハンドルが可視の Figure や座標軸が存在しない場合に gcf または gca を呼び出すと、Figure および座標軸が作成されます。
非表示のハンドル オブジェクトへのアクセス
ルートの ShowHiddenHandles プロパティは、ハンドル可視化のコントロールを有効または無効にします。既定では ShowHiddenHandles は 'off' です。これは、MATLAB は各オブジェクトの HandleVisibility プロパティの設定に従うことを意味します。
ShowHiddenHandles を on に設定することは、グラフィックス階層内の全オブジェクトの HandleVisibility プロパティを on に設定することと同じです。
メモ
座標軸のタイトルと軸ラベルの text オブジェクトは、座標軸の子オブジェクトではありません。これらのオブジェクトのハンドルにアクセスするには、座標軸の Title、XLabel、YLabel および ZLabel プロパティを使用します。
関数 close は、hidden オプションを使用して非表示ハンドルの Figure へのアクセスを可能にします。以下に例を示します。
close('hidden')
画面の最前面の Figure のハンドルが非表示の場合でも、その Figure を閉じます。
all と hidden オプションを両方とも指定した次の関数、
close('all','hidden')
は、すべての Figure を閉じます。
ハンドルの有効性と可視性
どのハンドルも、その HandleVisibility プロパティの状態に関係なく、有効性を維持します。変数にオブジェクト ハンドルを代入した場合は、そのハンドル変数を使用していつでもハンドルのプロパティを設定、取得することができます。