15.3.2.2 Handle Functions

Last-modified: 2025-03-23 (日) 22:51:53

15.3.2.2 ハンドル関数

変数がグラフィックス オブジェクトのインデックスであるか、軸や図のインデックスであるかを判断するにはishghandle、関数isgraphics、、、 isaxesおよびを使用しますisfigure。

: tf = ishghandle (h)

hがグラフィックス ハンドルの 場合は true を返し、それ以外の場合は false を返します。

h はハンドルの行列である可能性があり、その場合、hの要素がグラフィックス ハンドルである場合は true、そうでない場合は false となる論理配列が返されます。

See also: isgraphics, isaxes, isfigure, ishandle.

: tf = isgraphics (h)

: tf = isgraphics (h, type)

hがグラフィックス ハンドル (型type ) の場合は true を返し、それ以外の場合は false を返します。

型が指定されていない場合、ishghandle関数は と同等になります 。

See also: ishghandle, ishandle, isaxes, isfigure.

: tf = ishandle (h)

hがグラフィックスまたは Java オブジェクトへのハンドルである 場合は true を返し、それ以外の場合は false を返します。

h はハンドルの行列である可能性もあります。その場合、論理配列が返されます。h の要素がグラフィックスまたは Java オブジェクトへのハンドルである場合は true 、そうでない場合は false になります。

プログラミング ノート: 多くの場合、特定のオブジェクト タイプをテストする方が便利です。ハンドルがグラフィックス オブジェクトに属しているかどうかを判断するには、 ishghandleまたはisgraphicsを使用します。ハンドルが Java オブジェクトに属しているかどうかを判断するには、を使用しますisjava。

See also: ishghandle, isgraphics, isjava.

: tf = isaxes (h)

hが軸グラフィックス ハンドルの 場合は true を返し、それ以外の場合は false を返します。

hが行列の場合、 hの要素が軸グラフィックス ハンドルである場合は true、そうでない場合は false となる論理配列を返します。

See also: isfigure, ishghandle, isgraphics.

: tf = isfigure (h)

hが図のグラフィック ハンドルの 場合は true を返し、それ以外の場合は false を返します。

hが行列の場合、 hの要素が図のグラフィックス ハンドルである場合は true、そうでない場合は false となる論理配列を返します。

See also: isaxes, ishghandle, isgraphics.

この関数はgcf、現在の図オブジェクトへのインデックスを返すか、存在しない場合は作成します。同様に、gca現在の軸オブジェクトを返すか、存在しない場合は軸オブジェクト (およびその親図オブジェクト) を作成します。

: h = groot ()

ルート グラフィックス オブジェクトへのハンドルを返します。

ルート グラフィック オブジェクトは、すべてのグラフィック オブジェクトの最終的な親です。

さらに、ルート オブジェクトには、 などのグラフィックス システム全体に関する情報が含まれていますScreenSize。 を使用して get (groot) 、使用可能な情報を確認します。

グラフィックシステム全体のデフォルトは、 で始まるルートグラフィックオブジェクトのプロパティを設定することによって指定されます"Default"。たとえば、すべてのテキストオブジェクトのデフォルトフォントをFreeSansに設定するには、 次のようにします。

set (groot, "DefaultTextFontName", "FreeSans")

setデフォルトのプロパティは、の特別なプロパティ値を使用して削除できます"remove"。上記のデフォルトのフォント割り当てを元に戻すには、

set (groot, "DefaultTextFontName", "remove")

プログラミング ノート: ルート グラフィックス オブジェクトは、特別なハンドル値 0 によって識別されます。この一意の値は、ある時点で変更される可能性がありますが、groot常にルート グラフィックス オブジェクトを返すことを保証する を使用することで、将来の変更に対してコードが耐性を持つようにすることができます。

See also: gcf, gca, get, set.

: h = gcf ()

現在の図形へのハンドルを返します。

現在の図は、グラフィックス出力のデフォルトのターゲットです。複数の図が存在する場合は、gcf最後に作成された図、またはマウスで最後にクリックされた図を返します。

現在の図が存在しない場合は、図を作成してそのハンドルを返します。ハンドルは、図のプロパティを調べたり設定したりするために使用できます。たとえば、

fplot (@sin, [-10, 10]);
fig = gcf ();
set (fig, "numbertitle", "off", "name", "sin plot")

正弦波をプロットし、現在の図のハンドルを見つけて、その内容を説明するために図ウィンドウの名前を変更します。

注: 現在の図が存在しない場合に、新しい図を作成せずに現在の図を検索するには、"CurrentFigure"ルート グラフィックス オブジェクトのプロパティを照会します。

get (groot, "currentfigure");

See also: gca, gco, gcbf, gcbo, get, set.

: h = gca ()

現在の軸オブジェクトへのハンドルを返します。

現在の軸は、グラフィックス出力のデフォルトのターゲットです。複数の軸を持つ図の場合は、gca最後に作成された軸、またはマウスで最後にクリックされた軸を返します。

現在の軸オブジェクトが存在しない場合は、作成してそのハンドルを返します。ハンドルは軸のプロパティを調べたり設定したりするために使用できます。たとえば、

ax = gca ();
set (ax, "position", [0.5, 0.5, 0.5, 0.5]);

空の軸オブジェクトを作成し、図ウィンドウ内でその位置とサイズを変更します。

注: 新しい軸オブジェクトが存在しない場合にそれを作成せずに現在の軸を見つけるには、"CurrentAxes"図のプロパティを照会します。

get (gcf, "currentaxes");

See also: gcf, gco, gcbf, gcbo, get, set.

: h = gco ()

: h = gco (hfig)

現在の図の現在のオブジェクトへのハンドル、またはハンドルhfigを持つ図の現在のオブジェクトへのハンドルを返します。

図形の現在のオブジェクトは、最後にクリックされたオブジェクトです。これは、"CurrentObject"対象の図形のプロパティに保存されます。

最後のマウス クリックが図の子オブジェクト上で行われなかった場合、現在のオブジェクトは図自体になります。

対象の図でマウス クリックが発生しなかった場合、この関数は空のマトリックスを返します。

プログラミング ノート: この関数によって返される値は、コールバック実行中に返される値と必ずしも同じではありませんgcbo。実行中のコールバックは別のコールバックによって中断され、現在のオブジェクトが変更される可能性があります。

See also: gcbo, gca, gcf, gcbf, get, set.

関数getとset関数は、グラフィックスオブジェクトのプロパティを調べたり設定したりするために使用できます。たとえば、

get (groot)
   ⇒ ans =
      {
        type = root
        currentfigure = [](0x0)
        children = [](0x0)
        visible = on
        ...
      }

ルート グラフィックス オブジェクトのすべてのプロパティを含む構造体を返します。Octave のすべての関数と同様に、構造体は値で返されるため、構造体を変更しても内部のルート オブジェクトは変更されません。変更するには、set関数を使用する必要があります。また、この場合、 currentfigureプロパティは空であり、現在の図ウィンドウが存在しないことを示しています。

このget関数は、単一のプロパティの値を見つけるためにも使用できます。たとえば、

get (gca (), "xlim")
   ⇒ [ 0 1 ]

現在の図の現在の軸オブジェクトの x 軸の範囲を返します。

グラフィックスオブジェクトのプロパティを設定するには、set関数を使用します。たとえば、

set (gca (), "xlim", [-10, 10]);

現在の図の現在の軸オブジェクトのx軸の範囲を「[-10, 10]'。

関数が値引数なしで呼び出された場合、デフォルトのプロパティ値を照会することもできますset。引数が 1 つだけ (グラフィック ハンドル) 指定されている場合は、指定されたオブジェクト タイプのすべてのプロパティのデフォルト値を含む構造体が返されます。たとえば、

set (gca ())

軸オブジェクトのデフォルトのプロパティ値を含む構造体を返します。 がset2 つの引数 (グラフィック ハンドルとプロパティ名) で呼び出された場合は、要求されたプロパティのデフォルトのみが返されます。

: val = get (h)

: val = get (h, p)

グラフィックス ハンドル hから名前付きプロパティpの値を返します。

pが省略された場合は、 hの完全なプロパティ リストを返します。

hがベクトルの 場合、それぞれプロパティ値またはリストを含むセル配列を返します。

See also: set.

: set (h, property, value, …)

: set (h, {properties}, {values})

: set (h, pv)

: value_list = set (h, property)

: all_value_list = set (h)

: set (h, property, value, …)

グラフィックス ハンドル (またはグラフィックス ハンドルのベクトル) hの名前付きプロパティ値を設定します。

プロパティ名と値を指定するには、次の 3 つの方法があります。

プロパティと値のペア のコンマ区切りのリストとして
各プロパティはプロパティ名を含む文字列で、各値 はプロパティに適切な型の値です。hに複数のハンドルがある場合、それぞれに同じ値が割り当てられます。例:

h = plot ([0, 1]);
set (h, 'color', 'green');

プロパティ名を含む文字列プロパティのセル配列と、プロパティ値を含む セル配列値として。
この場合、値の列数はproperties内の要素数と一致する必要があります。値の最初の列には、 propertiesの最初のエントリの値などが含まれます。値の行数は 1 であるか、 hの要素数と一致する必要があります。最初のケースでは、 hの各ハンドルに同じ値が割り当てられます。2 番目のケースでは、 hの最初のハンドルに最初の行の値が割り当てられ、以下同様に続きます。例:

h = plot ([0, 1; 1, 0]);
set (h, {'color'}, {'green'; 'red'});

構造としてpv
これは、 pvのフィールド名がプロパティ名を表し、フィールド値がプロパティ値を示す最初のケースと同じです。最初のケースと同様に、 h内のすべてのハンドルに適用されるプロパティには 1 つの値のみを設定できます。例:

h = plot ([0, 1]);
props.color = 'green';
set (h, props);

プロパティを設定するための 3 つの構文は、任意の組み合わせで使用できます。

setは、名前付きプロパティが取る値のリストを照会するためにも使用されます。 セル リストclist内の可能な値のリストを返します。出力変数が使用されていない場合は、リストがフォーマットされて画面に出力されます。 clist = set (h, "property")"property"

プロパティが指定されていない場合 ( )、構造体slistが返されます。ここで、フィールド名はオブジェクトhのプロパティであり、フィールドは各プロパティの可能な値のリストです。出力変数が使用されていない場合、リストはフォーマットされて画面に出力されます。 slist = set (h)

プロパティを照会する場合、単一のグラフィックスオブジェクトに対して単一のグラフィック ス ハンドルhのみが許可されます。

クエリ例

hf = figure ();
set (hf, "paperorientation")
⇒  [ landscape | {portrait} ]

paperorientation プロパティは 2 つの値を取ることができ、デフォルトは であることを示しています"portrait"。

See also: get.

: parent = ancestor (h, type)

: parent = ancestor (h, type, "toplevel")

型が type に一致するハンドル オブジェクトhの最初の祖先を返します。ここで、typeは文字列です。

typeが文字列のセル配列の 場合、指定された type 文字列のいずれかと一致する最初の親を返します。

ハンドル オブジェクトh自体が type型の場合、hを返します。

が 3 番目の引数として指定されている場合は"toplevel"、最初の (最も近い) 親ではなく、条件に一致するオブジェクト階層の最上位の親を返します。

See also: findobj, findall, allchild.

: h = allchild (handles)

グラフィック オブジェクトのすべての子 (非表示の子を含む) を検索します。

この関数は に似ていますget (h, "children")が、非表示のオブジェクトも返します (HandleVisibility = "off")。

ハンドルがスカラーの場合、 h はベクトルになります。それ以外の場合、 h はハンドルと同じサイズのセルの行列になり、各セルにはハンドルのベクトルが含まれます。

See also: findall, findobj, get, set.

: findfigs ()

現在画面外にあるすべての可視図形を見つけて、画面上に移動します。

See also: allchild, figure, get, set.

print図は、および を使用して、さまざまなグラフィック形式で印刷または保存できますsaveas。ただし、場合によっては、タイトルや凡例の変更などのさらなる変更が行えるように、元の Octave ハンドル グラフィックを直接保存すると便利なことがあります。

これは次の関数で実現できます。

fig_struct = hdl2struct (gcf);
save myplot.fig -struct fig_struct;
...
fig_struct = load ("myplot.fig");
struct2hdl (fig_struct);

: s = hdl2struct (h)

ハンドルhに関連付けられたオブジェクトとその子のプロパティをフィールドが記述する構造体sを返します。

構造 体sのフィールドは"type"、、、、、およびです"handle"。

See also: struct2hdl, hgsave, findobj.

: h = struct2hdl (s)

: h = struct2hdl (s, p)

: h = struct2hdl (s, p, hilev)

構造体sからグラフィックス ハンドル オブジェクトhを構築します。

構造には"handle"、、、、およびフィールド が含まれている必要があります"type"。 "children""properties""special"

既存の図または軸のハンドルpが指定されている場合、新しいオブジェクトはそのオブジェクトの子として作成されます。親ハンドルが指定されていない場合は、ルート オブジェクトの既定値を使用して、新しい図と必要な子が構築されます。

3 番目のブール引数hilevを渡して、関数が凡例や hggroups などのリスナー/コールバックを保持するかどうかを指定できます。デフォルトは false です。

See also: hdl2struct, hgload, findobj.

: hnew = copyobj (horig)

: hnew = copyobj (horig, hparent)

ハンドルhorigに関連付けられたグラフィック オブジェクトのコピーを作成し 、新しいオブジェクトに 新しいハンドルhnewを返します。

親ハンドルhparent (ルート、図、軸、または hggroup) が指定されている場合、コピーされたオブジェクトはhparentの子として作成されます。

horigがハンドルのベクトルで、hparentがスカラーの場合、ベクトルhnew内の各ハンドルのプロパティはhparent"Parent"に設定されます。逆に、horigがスカラーで hparentがベクトルの場合、各親オブジェクトはhorigのコピーを受け取ります 。horigとhparent の両方が同じ要素数のベクトルである場合、parent が設定されます 。 hnew(i)hparent(i)

See also: struct2hdl, hdl2struct, findobj.