ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Figure Properties

Figure Properties の定義

Figure オブジェクトの作成

Figure オブジェクトを作成するには、関数 figure を使用します。

プロパティの変更

グラフィックス オブジェクトのプロパティを設定および取得するには、次の 2 とおりの方法があります。

  • 「プロパティ エディター」は、オブジェクトのプロパティ値を表示して変更できる対話型のツールです。

  • set コマンドと get コマンドで、プロパティ値を設定および取得します。

プロパティの既定値を変更する方法については、『Handle Graphics® オブジェクト』ドキュメンテーションの「既定のプロパティ値の設定」を参照してください。

Figure プロパティの説明

この節では、プロパティについて説明します。中かっこ { } は既定値です。

Alphamap

アルファ値の m1 列の行列

Figure alphamap。NaN でないアルファ値。MATLAB® は、行番号を使用して、アルファ値にアクセスします。たとえば、インデックス 1 は最初のアルファ値を示し、インデックス 2 は 2 番目のアルファ値を示します。Alphamap は、任意の長さに設定できます。既定の alphamap は、0 から 1 まで線形に増加する 64 個の値を含んでいます。

Alphamap は、Surface、Image、および Patch オブジェクトのレンダリングに影響を与えますが、他のグラフィックス オブジェクトには影響しません。

BeingDeleted

on | {off} (読み取り専用)

削除予定のオブジェクトを示すプロパティ。オブジェクトが削除されているかどうかを判定するメカニズム。MATLAB は、オブジェクトの関数 delete のコールバックが呼び出されると BeingDeleted プロパティを on に設定します (DeleteFcn プロパティを参照)。関数 delete の実行中は、そのプロパティは on に設定されたままになり、その後そのオブジェクトは削除されます。

たとえば、オブジェクトの関数 delete が多くのオブジェクトに作用する他の関数を呼び出すとします。削除されるオブジェクトに対して関数が操作を実行する必要がない場合、前もって、オブジェクトの BeingDeleted プロパティを確認できます。

関連情報は、関数 close および関数 delete のリファレンス ページを参照してください。

BusyAction

cancel | {queue}

コールバック関数の割り込みBusyAction プロパティは、実行中のコールバック関数に割り込むイベントを MATLAB でどのように取り扱うかを制御します。後続のコールバック関数は、実行中のコールバック関数がある場合、常にそれを中断しようとします。コールバックを実行中のオブジェクトの Interruptible プロパティが on (既定の設定) に設定されている場合、イベント キューが処理される次のポイントで割り込みが発生します。Interruptible プロパティが off の場合は、(実行中のコールバックを所有しているオブジェクトの) BusyAction プロパティが MATLAB のイベント処理方法を決定します。選択される処理方法は次のいずれかです。

  • cancel - 2 番目のコールバック関数を実行しようとしたイベントを破棄する。

  • queue - 現在のコールバック関数が終了するまで、2 番目のコールバック関数の実行イベントを待機させる。

ButtonDownFcn

関数ハンドル | 関数ハンドルと追加の引数をもつセル配列 | 文字列 (推奨しません)

ボタンを押したときのコールバック関数。ポインターが、子オブジェクト (たとえば、Uicontrol、Uipanel、Axes、または Axes の子オブジェクト) 以外の Figure ウィンドウ内にあるときにマウスのボタンをクリックすると必ず実行されます。ButtonDownFcn は、関数ハンドルとして定義します。この関数は、少なくとも 2 つの入力引数を定義しなければなりません (マウス ボタンを押すというイベントおよび空のイベント構造体に関連付けられた Figure のハンドルです)。

修飾キーも押されたかどうかを判断するには、Figure の SelectionType プロパティを参照してください。

関数ハンドルを使用してコールバック関数を定義する方法の詳細は、「関数ハンドル コールバック」を参照してください。

ButtonDownFcn の使用

この例では、Figure を作成し、ButtonDownFcn プロパティの関数ハンドル コールバックを定義します。Ctrl キーを押しながら Figure をクリックすると、コールバックによって、同一のコールバックをもつ新規 Figure が作成されます。

エディターで表示するにはこちらをクリックしてくださいエディターで表示するにはこちらをクリックしてください — このリンクは、以下の例を MATLAB のエディターで開きます。

例を実行するにはこちらをクリックしてください例を実行するにはこちらをクリックしてくださいCtrl キーを押しながら Figure をクリックすると、新規の Figure が作成されます。

fh_cb = @newfig; % Create function handle for newfig function
figure('ButtonDownFcn',fh_cb);

function newfig(src,evnt)
   if strcmp(get(src,'SelectionType'),'alt')
      figure('ButtonDownFcn',fh_cb)
   else
      disp('Use control-click to create a new figure')
   end
end
Children

ハンドル番号のベクトル

Figure の子オブジェクト。Figure 内に表示されているすべての Axes オブジェクト、ユーザー インターフェイス オブジェクトのハンドルを含むベクトルです。ハンドルの順番、および画面上のオブジェクトのスタックを変更できます。

オブジェクトの HandleVisibility プロパティが off である場合は、その親の Children プロパティにはリストされません。詳細は、HandleVisibility を参照してください。

Clipping

{on} | off

クリッピング モード。このプロパティは、Figure には影響しません。

CloseRequestFcn

関数ハンドル | 関数ハンドルと追加の引数をもつセル配列 | 文字列 (推奨しません)

Figure を閉じるときに実行される関数close コマンド (close(figure_handle) または close all) の発行時、コンピューターのウィンドウ マネージャーのメニューから Figure ウィンドウを閉じる際、または MATLAB の終了時に実行されます。

CloseRequestFcn は、Figure の閉じる動作に介在するメカニズムを提供します。たとえば、ダイアログ ボックスを表示して、閉じる操作の実行またはキャンセルの選択を要求したり、ユーザーが GUI を含む Figure を閉じることを回避したりできます。

基本的なメカニズムは以下のとおりです。

  1. ユーザーがコマンド ラインから関数 close コマンドを発行する、コンピューターのウィンドウ マネージャー メニューからウィンドウを閉じるか、MATLAB を終了する。

  2. 閉じる動作において、Figure の CloseRequestFcn で定義された関数が実行される。既定の関数は closereq です。

    closereq は、現在の Figure を無条件で削除し、ウィンドウを破棄します。closereq は、close コマンドによって Figure ごとに閉じる要求関数が呼び出される前に現在の Figure の引数として指定されることを利用しています。

closereq は、Figure の削除中は ShowHiddenHandles 設定に従い、非表示の Figure を削除しません。

CloseRequestFcn の再定義

CloseRequestFcn は、関数ハンドルとして定義する必要があります。以下に例を示します。

set(gcf,'CloseRequestFcn',@my_closefcn)

ここで、@my_closefcn は、関数 my_closefcn を参照する関数ハンドルです。

閉じる要求関数が関数 delete または関数 close を呼び出す場合以外に、MATLAB が Figure を閉じることはありません (非破壊の閉じる要求関数を使用して作成されたウィンドウの場合は、コマンド ラインから関数 delete(figure_handle) を随時呼び出せることに注意してください)。

閉じる要求関数の便利な用途の 1 つは、閉じる操作実行の確認をユーザーに尋ねるための質問ダイアログ ボックスを表示することです。次の関数は、この使用法を示しています。

エディターで表示するにはこちらをクリックしてくださいエディターで表示するにはこちらをクリックしてください — このリンクは、以下の例を MATLAB のエディターで開きます。

例を実行するにはこちらをクリックしてください例を実行するにはこちらをクリックしてくださいCtrl キーを押しながら Figure をクリックすると、新規の Figure が作成されます。

function my_closereq(src,evnt)
% User-defined close request function 
% to display a question dialog box 
   selection = questdlg('Close This Figure?',...
      'Close Request Function',...
      'Yes','No','Yes'); 
   switch selection, 
      case 'Yes',
         delete(gcf)
      case 'No'
      return 
   end
end

CloseRequestFcn を使用して、Figure を作成します。

figure('CloseRequestFcn',@my_closereq)

この関数を既定の閉じる要求関数にするには、既定値をルート レベルで設定します。

set(0,'DefaultFigureCloseRequestFcn',@my_closereq)

MATLAB では、この後に作成するすべての Figure の CloseRequestFcn で、この設定が使用されるようになります。

関数ハンドルを使用してコールバック関数を定義する方法の詳細は、「関数ハンドル コールバック」を参照してください。

Color

ColorSpec

背景色。Figure ウィンドウの背景色を制御します。RGB 値の 3 要素ベクトルや MATLAB で事前定義済みの名前を使用して色を指定することができます。詳細は、関数 ColorSpec を参照してください。

Colormap

RGB 値の m3 列の行列

Figure のカラーマップ。赤、緑、青 (RGB) の強度値を m 個の色に個別に定義する配列。MATLAB は、行番号で各色にアクセスします。たとえば、インデックス 1 は最初の RGB の 3 要素を、インデックス 2 は 2 番目の RGB の 3 要素を指定します。

使用可能な色の数

カラーマップの長さは任意ですが、幅は 3 列でなければなりません。既定の Figure のカラーマップは、事前定義された 64 色で構成されます。

カラーマップを使用するオブジェクト

カラーマップは、Surface オブジェクト、Image オブジェクト、および Patch オブジェクトのレンダリングに影響を与えますが、通常は他のグラフィックス オブジェクトには影響しません。詳細は、関数 colormap および ColorSpec のリファレンス ページを参照してください。

CreateFcn

関数ハンドル | 関数ハンドルと追加の引数をもつセル配列 | 文字列 (推奨しません)

Figure 作成時に実行されるコールバック関数。MATLAB が Figure オブジェクトを作成するときに実行されます。このプロパティを既定値としてルート レベルで定義しなければなりません。たとえば、次のステートメント

set(0,'DefaultFigureCreateFcn',@fig_create)

は、すべての Figure が次のように定義されるセットアップ関数 fig_create を実行するように作成するための既定値をルート レベルで定義します。

function fig_create(src,evnt)
set(src,'Color',[.2 .1 .5],...
   'IntegerHandle','off',...
   'MenuBar','none',...
   'ToolBar','none')
end

MATLAB は、Figure のすべてのプロパティの設定後に、create 関数を実行します。このプロパティを既存の Figure オブジェクトに設定しても、影響はありません。

関数ハンドルを使用してコールバック関数を定義する方法の詳細は、「関数ハンドル コールバック」を参照してください。

CreateFcn が実行中であるオブジェクトのハンドルは、ルートの「CallbackObject」プロパティを通してのみアクセスできます。このプロパティは、gcbo またはコールバックを生成しているオブジェクト (イベントのソース) のハンドルを使用してクエリできます。次に例を示します。

f = figure('CreateFcn',@(o,e) keyboard)
K>> gcbo 

このコードと、次のコードは、いずれも 1 を返します。

f = figure('CreateFcn',@(o,e) keyboard)
K>> o 
CurrentAxes

現在の Axes のハンドル

Figure 内のターゲット Axes。MATLAB は、このプロパティを Figure の現在の Axes のハンドル (つまり、この Figure が現在の Figure である場合に gca コマンドによって返されるハンドル) に設定します。Axes オブジェクトの子オブジェクトが存在する Figure には、常に現在の Axes があります。現在の Axes は、最上層の Axes でなくてもかまいません。また、Axes を CurrentAxes に設定しても、他のすべての Axes より上位に再スタックされることはありません。

Axes を現在の Axes にするには、axes コマンドおよび set コマンドを使用できます。たとえば、axes(axes_handle) および set(gcf,'CurrentAxes',axes_handle) を使用すると、ハンドル axes_handle で識別される Axes が現在の Axes になります。また、axes(axes_handle) を使用すると、その Axes が Figure 内の他のすべての Axes より上位に再スタックされます。

Figure 内に Axes が存在しない場合、get(gcf,'CurrentAxes') は空行列を返します。関数 gca では、Axes が存在しない場合、Axes が作成されます。

CurrentCharacter

single character

最後に押されたキー。MATLAB は、このプロパティを Figure ウィンドウ内で最後に押されたキーに設定します。CurrentCharacter は、ユーザー入力を取得するのに使用します。

CurrentObject

object handle

現在のオブジェクトのハンドル。MATLAB は、最後にマウスでクリックされたオブジェクトのハンドルをこのプロパティに設定します。これは、最前面に表示されるオブジェクトです。このプロパティは、ユーザーが選択したオブジェクトを判定するために使用できます。関数 gco は、CurrentFigureCurrentObject を取得する便利な方法です。

HitTest プロパティは、オブジェクトが CurrentObject になることができるかどうかを制御します。

非表示のハンドル オブジェクト

HandleVisibility プロパティが off であるオブジェクト (軸ラベルやタイトルなど) をクリックすると、CurrentObject プロパティが空の [] に設定されます。ユーザーが非表示のオブジェクトをクリックした場合に空の値が返されるのを回避するには、非表示のオブジェクトの HitTest プロパティを off に設定してください。

マウス オーバー

オブジェクト上にマウスを移動しても、CurrentObject は更新されません。このプロパティを更新するには、オブジェクトをクリックしなければなりません。関連情報については、CurrentPoint プロパティを参照してください。

CurrentPoint

2 要素ベクトル :[x 座標、y 座標]

Figure 内で最後にマウスのボタンをクリックした位置。MATLAB は、最後にマウスのボタンがクリックされたときのポインターの位置をこのプロパティに設定します。MATLAB では、ポインターが Figure ウィンドウ内にあるときにマウスのボタンがクリックされると、このプロパティが常に更新されます。

Figure 内のポイントを選択し、CurrentPoint プロパティから返された値を使用してポイントをプロットした場合、丸め誤差の影響で位置に違いが生じる可能性がある点に注意してください。

CurrentPoint と Cursor Motion

上記の動作に加え、MATLAB は、Figure の WindowButtonMotionFcn プロパティおよび WindowButtonUpFcn プロパティに定義されたコールバック ルーチンを実行する前に、CurrentPoint を更新します。このため、これらのコールバック ルーチンから CurrentPoint をクエリすることができます。次のように動作します。

  • WindowButtonMotionFcn または WindowButtonUpFcn に対してコールバック ルーチンが定義されていない場合、MATLAB は、Figure ウィンドウ内でマウス ボタンがクリックされたときのみ CurrentPoint を更新します。

  • WindowButtonMotionFcn にコールバック ルーチンが定義されている場合、MATLAB は、コールバックを実行する直前に CurrentPoint を更新します。WindowButtonMotionFcn は、該当する Figure ウィンドウ内のみで実行されます。ただし、マウスのボタンを Figure ウィンドウ内でクリックし、ボタンを押したまま画面上の任意の場所にポインターを移動した場合は、マウスのボタンが離されるまで、画面上の任意の場所でルーチンが実行 (および、CurrentPoint が更新) されます。

  • WindowButtonUpFcn にコールバック ルーチンが定義されている場合、MATLAB は、コールバックを実行する直前に CurrentPoint を更新します。WindowButtonUpFcn は、ポインターが該当する Figure ウィンドウ内にあるときのみ実行されます。ただし、マウスのボタンが Figure ウィンドウ内で最初にクリックされた場合は、画面上の任意の位置でボタンを離すと、コールバックが実行されます。これは、CurrentPoint の更新よりも優先されます。

Figure の CurrentPoint は、前述のとおり、特定のイベントが発生する場合にのみ更新されます。WindowButtonMotionFcn の実行に時間がかかる場合や、ポインターが非常に速く移動された場合などの特定の状況では、実際のポインター位置が CurrentPoint に反映されず、WindowButtonMotionFcn の実行開始時の位置に反映されることがあります。

CurrentPoint は、Units プロパティに設定されている単位を使って、Figure ウィンドウの左下隅から測定されます。

ルートの PointerLocation プロパティには、ポインターの移動に同期して更新されたポインターの位置が含まれます。ただし、位置は Figure ウィンドウではなく、画面に対して測定されます。

Uicontrol オブジェクトをクリックしたときにこのプロパティを設定する方法については、uicontrol を参照してください。

DeleteFcn

関数ハンドル | 関数ハンドルと追加の引数をもつセル配列 | 文字列 (推奨しません)

Figure を削除するときのコールバック関数。Figure オブジェクトの削除時 (delete コマンドまたは close コマンドを発行した場合など) に実行されます。MATLAB は、オブジェクトのプロパティを削除する前にこの関数を実行するので、これらの値はコールバック ルーチンで使用できます。

関数ハンドルを使用してコールバック関数を定義する方法の詳細は、「関数ハンドル コールバック」を参照してください。

DeleteFcn が実行中のオブジェクトのハンドルは、関数 gcbo でクエリできるルートの CallbackObject プロパティを通してのみアクセスできます。

Figure の CloseRequestFcn プロパティも参照してください。

関数ハンドルを使用してコールバック関数を定義する方法の詳細は、「関数ハンドル コールバック」を参照してください。

DockControls

{on} | off

Figure のドッキング用コントロールの表示。Figure を MATLAB デスクトップにドッキングするための [デスクトップ] メニュー項目およびタイトル バーの Figure のドッキング ボタンを有効にするかどうかが決定されます。

  • on — Figure のドッキング用コントロールが表示されます。

  • off — Figure をドッキングするための [デスクトップ] メニュー項目が使用できなくなり、Figure のドッキング ボタンは非表示になります。

Figure のドッキングの詳細は、WindowStyle プロパティを参照してください。

DoubleBuffer

{on} | off

    メモ:   このプロパティは旧式であり、影響はありません。このプロパティは、古いコンピューターで Flash を使用しないアニメーションを作成するために用意されていました。

簡単なアニメーション用の Flash を使用しないレンダリング。ダブル バッファリングとは、オフスクリーン ピクセル バッファーに描画し、描画が完成すると、バッファーの内容を画面に出力するプロセスです。ダブル バッファリングは、簡単なアニメーション (多数の多角形を含むものではなく、線を含むようなもの) に対して、Flash を使用しないレンダリングを行います。ダブル バッファリングを使用する場合、アニメーションされるオブジェクトの EraseMode プロパティを normal に設定してください。ダブル バッファリングを無効にするには、set コマンドを使用します。

set(figure_handle,'DoubleBuffer','off')

ダブル バッファリングは、Figure の Renderer プロパティが painters である場合にのみ動作します。

FileName

文字列

GUI FIG ファイル名。GUIDE は、GUI のレイアウトをこのプロパティに保存するために使用する FIG ファイルの名前を保存します。GUIDE 以外の GUI では、既定の設定の FileName は空です。GUIDE 以外の GUI でも関数 setFileName プロパティを設定し、関数 get を実行すると、どの GUI が実行されているか、その GUI が保存済みであるかどうかを検証できます。

FixedColors

RGB 値の m3 列の行列 (読み取り専用)

カラーマップ以外の色。Figure のカラーマップに含まれない色は、固定色として定義することにより、すべて Figure ウィンドウに表示できます。これらの色には、軸線やラベル、line オブジェクト、text オブジェクト、uicontrol オブジェクト、uimenu オブジェクトおよび text オブジェクトの色と、以下のようなステートメントで明示的に定義する任意の色があります。

set(gcf,'Color',[0.3,0.7,0.9])

固定色の定義は、システムのカラー テーブルに常駐し、Figure のカラーマップには表示されません。このため、固定色の数と Figure のカラーマップのエントリ数の合計が、使用しているシステムの最大色数を超える場合、固定色で同時に表示される色の数が制限される可能性があります。

(システム上でサポートされる合計色数の決定の情報は、ルートの ScreenDepth プロパティを参照してください。MATLAB によるアプリケーション間での色の分配方法の情報は、MinColorMap プロパティを参照してください)。

    メモ:   FixedColors プロパティは廃止予定のため、将来のリリースでは削除される予定です。

HandleVisibility

{on} | callback | off

オブジェクト ハンドルへのアクセスのコントロール。オブジェクトのハンドルが、このオブジェクトの親に対する子のリストで表示されるかどうかを決めます。HandleVisibility は、ユーザー インターフェイス デバイス (ダイアログ ボックスなど) のみを含む Figure 内にコマンド ラインから誤って描画したり、Figure を削除したりすることを防ぐ場合に有効です。

HandleVisibilityon であるとき、ハンドルは常に見える状態です。

  • on — ハンドルは常に表示されます。

  • callback — コールバック ルーチン内から、あるいはコールバック ルーチンにより呼び出される関数から、ハンドルを参照することができます。しかし、コマンド ラインから呼び出される関数からは参照できません。これは、コマンド ライン ユーザーから GUI を保護しながら、コールバック ルーチンがオブジェクトのハンドルにアクセスできるようにするために提供されています。

  • off — ハンドルは常に表示されません。このオプションは、GUI に影響を与える可能性がある (ユーザーの入力した文字列を評価するような) 関数をコールバックが実行する際に使用します。このオプションは、その関数の実行時にハンドルを一時的に隠します。

可視性と他の関数から返されるハンドル

ハンドルがその親オブジェクトのリストで Children として可視化できないとき、オブジェクト階層の検索やハンドル プロパティのクエリによってハンドルを取得する関数は、ハンドルを返すことはできません。このような関数には、getfindobjgcagcfgconewplotclaclfclose があります。

ハンドルの可視状態が callbackoff を使用して制限されているとき、オブジェクトのハンドルは、その親の Children プロパティには現れません。Figure は、ルートの CurrentFigure プロパティに現れず、オブジェクトはルートの CallbackObject プロパティまたは Figure の CurrentObject プロパティに現れません。そして、Axes は、親オブジェクトの CurrentAxes プロパティに現れません。

すべてのハンドルの可視化

ルートの ShowHiddenHandles プロパティを on に設定すると、個々のハンドルの HandleVisibility の設定にかかわりなく、すべてのハンドルを可視化することができます。これによって HandleVisibility プロパティの値が影響を受けることはありません。

非表示のハンドルの有効性

隠蔽されているハンドルは、有効なままです。オブジェクトのハンドルがわかっている場合は、それをハンドルに作用する関数に渡したり、そのプロパティを設定および取得できます。

HitTest

{on} | off

マウス クリックによる選択。Figure 上でのマウス クリックの結果、Figure が現在のオブジェクト (gco コマンドと Figure の CurrentObject プロパティにより返される) になり得るかどうかを指定します。HitTestoff の場合、Figure をクリックすると、CurrentObject が空行列に設定されます。

IntegerHandle

{on} | off

Figureのハンドル モード。Figure オブジェクトのハンドルは、既定の設定では整数です。新規 Figure の作成時には、MATLAB は、既存の Figure で使用されていない最小の整数を使用します。Figure を削除すると、その整数のハンドルを再度使うことができます。

このプロパティを off に設定すると、MATLAB は、再度使用できない実数のハンドル (たとえば、 67.0001221 など) を整数の代わりに割り当てます。これは、ハンドルに整数でない値を割り当てることで、ダイアログ ボックスへの不注意な描画の可能性を低減するためにダイアログ ボックス用に設計された機能です。

Interruptible

{on} | off

コールバック ルーチンの割り込みモード。Figure のコールバック関数がその後に続いて呼び出されるコールバックによって割り込まれるかどうかを制御します。

コールバックの中断方法

MATLAB は、実行中のコールバック関数内に関数 drawnow、関数 figure、関数 getframe、または関数 pause がある場合のみにコールバックを中断できるキューされたイベントがあるかどうかをチェックします。これらの関数のいずれかを実行している場合、MATLAB は、待機中のすべてのコールバック関数の実行を含むすべてのペンディングされているイベントを処理します。中断されたコールバックは、その後、実行を再開します。

中断可能なプロパティ コールバック

Interruptible プロパティは、ButtonDownFcnKeyPressFcnKeyReleaseFcnWindowButtonDownFcnWindowButtonMotionFcnWindowButtonUpFcnWindowKeyPressFcnWindowKeyReleaseFcn、および WindowScrollWheelFcn に対して定義されるコールバック関数のみに影響を及ぼします。

関連情報については、BusyAction プロパティを参照してください。

InvertHardcopy

{on} | off

ハードコピーを白の背景と黒のオブジェクトに変更。印刷出力にのみ影響を与えます。背景色 (Color プロパティ) が白以外の背景色の Figure を印刷出力すると、グラフィックス オブジェクトと Figure の背景とのコントラストが弱い出力結果となり、また、プリンターのトナーの消費も多くなります。

InvertHardCopyon にすると、Figure と Axes の色が白に、軸、目盛り、軸ラベルなどの色が黒に変更され、MATLAB の印刷出力効果が向上します。関数 line、関数 text、および関数 patch と関数 surface のエッジは、print コマンドのオプション指定によっては変更されることがあります。

InvertHardCopyoff に設定すると、印刷出力は画面上に表示された色で行われます。

MATLAB の Figure の印刷出力の詳細は、関数 print を参照してください。

KeyPressFcn

関数ハンドル | 関数ハンドルと追加の引数をもつセル配列 | 文字列 (推奨しません)

キー プレス コールバック。Figure ウィンドウにフォーカスがあるときにキーを押すと呼び出されるコールバック関数。KeyPressFcn を関数ハンドルとして定義してください。この関数は、少なくとも 2 つの入力引数 (キーを押す操作に関連付けられた Figure のハンドルとイベント構造体) を定義しなければなりません。

関数ハンドルを使用してコールバック関数を定義する方法の詳細は、「関数ハンドル コールバック」を参照してください。

このプロパティに対してコールバックがまったく指定されていない場合 (既定状態)、MATLAB はすべてのキー押下をコマンド ウィンドウに渡します。一方、このプロパティに対してコールバックを定義した場合には、Figure は各キーの押下でフォーカスを維持し、各キーの押下により指定のコールバックを実行します。

KeyPressFcn イベント構造体

コールバックが関数ハンドルとして指定された場合、MATLAB はそのコールバックに対して以下のフィールドを含む構造体を渡します。

フィールド

内容

Character

キーを押した結果として表示される文字です (空または印刷不能文字の場合もあります)。

Key

押されるキーです。キーに刻印された小文字のラベルまたは説明用の文字列によって識別されます。

Modifier

押される 1 つまたは複数の修飾キー (つまり、controlaltshift) の名前が格納されるセル配列です。Macintosh コンピューターの場合は、command 修飾キーを押したときの 'command' が格納されます。

KeyPressFcn の動作の確認

任意のキーまたはキーの組み合わせについてイベント データ フィールドの値を表示するには、以下のコードを実行します。

figure('NumberTitle','off','Menubar','none',...
       'Name','Press keys to put event data in Command Window',...
       'Position',[560 728 560 200],...
       'KeyPressFcn',@(obj,evt)disp(evt));

キーが押されるたびに、KeyPressFcndisp を使ってイベント データをコマンド ウィンドウに表示します。

また、サンプル GUI の ex_KeyPressFcn.m を表示して実行することもできます。この GUI は、キーストロークのイベント データを Figure ウィンドウに表示し、イベント データ構造体をワークスペースに書き込むためのオプションを提供します。

コールバック KeyPressFcn および KeyReleaseFcn に渡されるイベント データには、以下の特性があります。

  • Key フィールドは常に小文字です (Shift キーを押さない場合の記号が格納されます)。

  • 修飾キー (AltCtrlShift) は、単独で押された場合でも他のキーと組み合わせて押された場合でもデータを返します。

  • Modifier フィールドには、0 個以上の文字列を含むセル配列が格納されます。

  • 修飾キーは Character フィールドに影響を与える可能性がありますが、Key フィールドを変更することはありません。

  • 一部のキーと、Ctrl で修飾されたキーは、Character フィールドに印刷不能文字を格納します。

  • CtrlAltShift、ファンクション キー、および他のいくつかのキーは、Character フィールドに格納されるデータを生成しません。

KeyPressFcn の使用法

この例では、Figure を作成し、KeyPressFcn プロパティの関数ハンドル コールバックを定義します。p キーを押した場合、コールバックは Figure を PNG イメージ ファイルとしてエクスポートします。Ctrl+p を押した場合、コールバックは Figure を PDF ファイルとしてエクスポートします。

function figure_keypress
    figure('KeyPressFcn',@printfig);
    surf(peaks)
    
    function printfig(src,event)
    % Callback to parse keypress event data to print a figure
        if event.Character == 'p'
            % On some systems you must send the file to a printer manually
            if length(event.Modifier) == 1 && ...
                strcmp(event.Modifier{:},'control')
                % Create PDF file of figure when Ctrl key is down
                print ('-dpdf',['-f' num2str(src)])
            elseif isempty(event.Modifier)
                % Print PNG image of figure when Ctrl is not pressed
                print ('-dpng','-r200',['-f' num2str(src)])
            end
        end
    end
end
KeyReleaseFcn

関数ハンドル | 関数ハンドルと追加の引数をもつセル配列 | 文字列 (推奨しません)

キーを離したときのコールバック関数。Figure ウィンドウにフォーカスがあるときにキーを離すと呼び出されるコールバック関数。KeyReleaseFcn は、関数ハンドルとして定義する必要があります。この関数は、少なくとも 2 つの入力引数 (キーを離す操作に関連付けられた Figure のハンドルとイベント構造体) を定義しなければなりません。

関数ハンドルを使用してコールバック関数を定義する方法の詳細は、「関数ハンドル コールバック」を参照してください。

KeyReleaseFcn イベント構造体

コールバックが関数ハンドルの場合、MATLAB は以下のフィールドを含むコールバック関数に構造体を第 2 引数として渡します。

フィールド

内容

Character

キーを離した結果として表示される文字です (空または印刷不能文字の場合もあります)。

Key

離されるキーです。キーに刻印された小文字のラベルまたは説明用の文字列によって識別されます。

Modifier

離される 1 つまたは複数の修飾キー (つまり、controlaltshift) の名前が格納されるセル配列です。Macintosh コンピューターの場合は、command 修飾キーを離したときに 'command' が格納されます。

KeyReleaseFcn の影響を受けるプロパティ

KeyReleaseFcn プロパティに対してコールバックが定義されている場合、MATLAB はコールバックを実行する直前に CurrentCharacter Figure プロパティを更新します。

複数のキーを押すイベントと 1 つのキーを離すイベント

KeyPressFcnKeyReleaseFcn の両方にコールバックが定義された Figure を考えます。複数のキーをほぼ同時に押した場合、MATLAB は最後に押されたキーの KeyPressFcn イベントだけを繰り返し生成します。

たとえば、a キーを押したままで、s キーを押す場合、MATLAB は、s キーが押されるまで a キーの KeyPressFcn イベントを繰り返し生成します。s キーが押された時点で、MATLAB は s キーの KeyPressFcn イベントを繰り返し生成します。s キーを離した場合、MATLAB は、s キーの KeyReleaseFcn イベントを生成しますが、a キーの新しい KeyPressFcn イベントは生成されません。その後、a キーを離すと、KeyReleaseFcn が再度実行されます。KeyReleaseFcn は、KeyPressFcn が何をするかとは関係なく、Figure にフォーカスがある場合にキーが離されるたびにコールバックを実行します。

コールバック KeyPressFcn および KeyReleaseFcn に渡されるイベント 構造体には、以下の特性があります。

  • Key フィールドは常に小文字です (Shift キーを押さない場合の記号が格納されます)。

  • 修飾キー (AltCtrlShift) は、単独で押された場合でも他のキーと組み合わせて押された場合でもデータを返します。

  • Modifier フィールドには、0 個以上の文字列を含むセル配列が格納されます。

  • 修飾キーは Character フィールドに影響を与える可能性がありますが、Key フィールドを変更することはありません。

  • 一部のキーと、Ctrl で修飾されたキーは、Character フィールドに印刷不能文字を格納します。

  • CtrlAltShift、ファンクション キー、および他のいくつかのキーは、Character フィールドに格納されるデータを生成しません。

修飾キー

キーと修飾キーを押して離すと、修飾キーがイベント構造体の Modifier フィールドに返されます。修飾キーのみを押して離した場合、その修飾キーの名前は KeyReleaseFcn のイベント構造体には返されませんが、KeyPressFcn のイベント構造体には返されます。

KeyReleaseFcn の動作の確認

以下のサンプル コードは、KeyReleaseFcn プロパティの Figure を作成して関数ハンドル コールバックを定義します。このプロパティはコールバックが受け取るイベント データを報告します。

function key_releaseFcn
   figure('KeyReleaseFcn',@cb)
      function cb(src,evnt)
      if ~isempty(evnt.Modifier)
         for ii = 1:length(evnt.Modifier)
            out = sprintf('Character: %c\nModifier: %s\nKey: %s\n',...
					evnt.Character,evnt.Modifier{ii},evnt.Key);
            disp(out)
         end
      else
         out = sprintf('Character: %c\nModifier: %s\nKey: %s\n',...
				evnt.Character,'No modifier key',evnt.Key);
         disp(out)
      end
   end   
end
MenuBar

none | {figure}

Figure のメニュー バーの有効化/無効化。MATLAB の Figure ウィンドウ上部にあるメニュー バーを表示または非表示にできます。既定 (figure) では、メニュー バーは表示されています。

このプロパティは、組み込みメニューにのみ影響します。このプロパティは、uimenu コマンドを使用して定義するメニューには影響しません。

ウィンドウの WindowStyle'modal' に変更すると、ツール バーとメニュー バーが (もしあれば) 両方とも非表示になります。WindowStyle'modal' から 'normal' または 'docked' に変更すると、Figure のツール バーとメニュー バーが表示されます。

MinColormap

スカラー (既定の設定は 64)

使用するカラー テーブルのエントリの最小数。Figure に対して定義されたカラーマップを格納するために MATLAB が使用するシステム カラー テーブルのエントリの最小数を指定します (Colormap プロパティを参照してください)。状況によっては、適切な色の使用を保証するために、この値を大きくする必要があります。

たとえば、MATLAB の他に多数の色を必要とするアプリケーションを実行しており、Figure の大規模なカラーマップ (150200 色など) を定義しているとします。MATLAB では、ユーザーが指定したすべての色を定義するだけの十分なスロットがない場合、システム カラー テーブルの既存の色から近い色を選択することになります。

Figure のカラーマップに定義した正確な色を MATLAB が確実に使用するようにするには、MinColormap をカラーマップの長さに等しくなるように設定してください。

set(gcf,'MinColormap',length(get(gcf,'ColorMap')))

ただし、MinColormap の値が大きくなるほど、他のウィンドウ (他の MATLAB Figure ウィンドウも含む) の表示色が不正確になる点に注意してください。

    メモ:   MinColormap プロパティは廃止予定のため、将来のリリースでは削除される予定です。

Name

string

Figure ウィンドウのタイトル。Figure ウィンドウに表示されるタイトルを指定します。既定の設定では、Name は空配列であり、Figure のタイトルは Figure 1Figure 2 のように表示されます。このパラメーターに文字列を設定すると、Figure のタイトルは、Figure 1: <string> になります。NumberTitle プロパティを参照してください。

NextPlot

new | {add} | replace | replacechildren

次のプロットの追加方法。グラフィックス出力を表示するために MATLAB が使用する Figure を指定します。現在の Figure の値によって、次のようになります。

  • new — グラフィックスの表示用に新規 Figure を作成します (グラフ作成関数に既存の親オブジェクトがプロパティと値の対として指定されている場合を除く)。

  • add — 現在の Figure を使用してグラフィックスを表示します (既定の設定)。

  • replace — グラフィックスを表示する前に、Position を除くすべての Figure プロパティを既定の設定に再設定し、Figure のすべての子オブジェクトを削除します (関数 clf reset と等価)。

  • replacechildren — すべての子オブジェクトを削除しますが、Figure プロパティは再設定しません (関数 cla と等価)。

関数 newplot を使用すると、NextPlot プロパティを簡単に取り扱うことができます。詳細は、Axes の NextPlot プロパティと「グラフィックス出力の制御」を参照してください。

NumberTitle

{on} | off (GUIDE の既定の設定は off)

Figure ウィンドウのタイトル番号。文字列 Figure No. N (N は Figure 番号) を Figure ウィンドウ タイトルのはじめに表示するかどうかを決定します。Name プロパティを参照してください。

OuterPosition

4 要素ベクトル

タイトル バー、メニュー バー、ツール バー、および外周を含む Figure の位置。タイトル バー、メニュー バー、ツール バー、および外周を含む Figure ウィンドウ全体の画面上のサイズと位置を指定します。次の形式の 4 要素ベクトルを使って四角形の位置を指定します。

rect = [left, bottom, width, height]

ここで、leftbottom は、画面の左下隅から Figure ウィンドウの左下隅までの距離を定義します。widthheight は、ウィンドウの大きさを定義します。この指定に使用される単位についての情報は、Units プロパティを参照してください。left 要素と bottom 要素は、複数のモニターのあるシステム上では負の値になる場合もあります。

ドッキングした Figure の位置

Figure を MATLAB デスクトップにドッキングする場合、OuterPosition プロパティは、画面ではなく、Figure グループ コンテナーに関して指定されます。

Figure の移動とサイズ変更

関数 get を使用すると、このプロパティを取得し、Figure の位置を指定できます。関数 set を使用すると、Figure のサイズを変更し、新しい位置に移動できます。ドッキングした Figure の OuterPosition は設定できません。

    メモ:   Microsoft® Windows® システムでは、OuterPosition プロパティの値にかかわらず、Figure ウィンドウの幅を 104 ピクセル未満にすることはできません。

PaperOrientation

{portrait} | landscape

横長または縦長の用紙方向。Figure を印刷出力する用紙の方向を決定します。

  • portrait — 用紙の長辺を縦方向にします。

  • landscape — 用紙の長辺を横方向にします。

詳細は、orient コマンドを参照してください。

PaperPosition

4 要素の rect ベクトル

用紙上の印刷出力位置。印刷出力する Figure の用紙上での位置を決める四角形です。次の形式のベクトルを使って、この四角形を指定します。

 rect = [left, bottom, width, height]

ここで、left は用紙の左端から四角形の左端までの距離を指定し、bottom は用紙の下部から四角形の下部までの距離を指定します。これらの距離を使って、四角形の左下隅を定義します。widthheight は、四角形の大きさを定義します。PaperUnits プロパティは、この四角形を定義するために使用する単位を指定します。

PaperPositionMode

auto | {manual}

Figure の WYSIWYG 印刷

  • manual — MATLAB は、PaperPosition プロパティで指定された値を使用します。

  • auto — MATLAB では、用紙中央に、コンピューター画面上と同じサイズで Figure を印刷出力します。

PaperSize

[width height]

用紙サイズPaperUnits 単位で測定される、現在の PaperType のサイズです。標準の用紙サイズの選択については、PaperType を参照してください。

PaperType

次の表から値を選択

標準の用紙サイズの選択PaperSize を以下のいずれかの標準サイズに設定します。

 用紙サイズの表

新規の用紙サイズ上で印刷する Figure を適切に配置するために、PaperPosition プロパティの変更が必要となる場合があります。これを解決する方法の 1 つとして、normalized PaperUnits の使用を挙げることができます。このプロパティを使用すると用紙サイズにかかわらず、印刷ページの相対的な占有サイズが同じになるように Figure のサイズを自動的に調整します。

PaperUnits

normalized | {inches} | centimeters | points

ハードコピーの測定単位PaperPosition プロパティおよび PaperSize プロパティを定義するために使用する単位を指定します。MATLAB は、ページの左下隅を基点としてすべての単位を測定します。normalized が適用された単位は、Figure の左下隅を点 (0, 0) に、右上隅を (1.0, 1.0) にマップします。inchescentimeterspoints は、絶対単位 (1 ポイントは 1/72 インチ) です。

PaperUnits 値を変更した場合、PaperUnits の設定値が既定値であることを前提としている他の関数に影響を及ぼさないように、計算終了後にプロパティを元の既定値に戻すことを推奨します。

Parent

handle

Figure の親オブジェクトのハンドル。Figure オブジェクトの親オブジェクトは、rootobject オブジェクトです。Root オブジェクトのハンドルは、常に 0 です。

Pointer
crosshair | {arrow} | watch | topl | 
topr | botl | botr | circle | cross | 
fleur | left | right | top | bottom | 
fullcrosshair | ibeam | custom | hand

ポインター記号の選択。Figure ウィンドウ内のポインター (カーソル) の位置を示すために使用される記号を決定します。Pointercustom に設定すると、ユーザー独自のポインター記号を定義できます。詳細は、PointerShapeCData プロパティ「Figure のポインターの指定」を参照してください。

PointerShapeCData

1616 列の行列。

ユーザー定義のポインターPointer プロパティを custom に設定するときに使用されるポインターを定義します。これは、16 x 16 要素の行列で、以下の値を使って 16 x 16 ピクセルのポインターを定義します。

  • 1 — 黒のピクセル

  • 2 — 白のピクセル

  • NaN — 透明なピクセル (画面を透明に表示します)

PointerShapeCData 行列の要素 (1,1) は、ポインターの左上隅に対応します。Pointer プロパティを事前定義のポインター記号のいずれかに設定した場合、PointerShapeCData の値は変更されません。32 x 32 ピクセルのポインターをサポートするコンピューター システムでは、使用可能なピクセル マップの 4 分の 1 のみのポインターになります。

PointerShapeHotSpot

2 要素ベクトル

ポインターのアクティブ領域。ポインターの位置を示すピクセルを定義する PointerShapeCData 行列内の行と列のインデックスを指定します。この位置は、CurrentPoint プロパティと Root オブジェクトの PointerLocation プロパティに含まれます。既定値は、左上隅を示す要素 (1,1) です。

Position

4 要素ベクトル

Figure の位置。タイトル バー、メニュー バー、ツール バー、および外周を除く Figure ウィンドウの画面上のサイズと位置を指定します。次の形式の 4 要素ベクトルを使って四角形の位置を指定します。

rect = [left, bottom, width, height]

ここで、leftbottom は、画面の左下隅から Figure ウィンドウの左下隅までの距離を定義します。widthheight は、四角形の大きさを定義します。この指定に使用される単位についての情報は、Units プロパティを参照してください。left 要素と bottom 要素は、複数のモニターのあるシステム上では負の値になる場合もあります。

ドッキングした Figure の位置

Figure を MATLAB デスクトップまたは Figure ウィンドウ コンテナーにドッキングする場合、Position プロパティは、画面ではなく、Figure グループ コンテナーに関して指定されます。

Figure の移動とサイズ変更

関数 get では、このプロパティを取得し、Figure の位置を決定することができます。関数 set では、Figure のサイズ変更や新しい位置への移動ができます。ドッキングした Figure の Position は設定できません。

    メモ:   Windows システムでは、Position プロパティの値にかかわらず、Figure ウィンドウの幅を 104 ピクセル未満にすることはできません。

    また、Figure ウィンドウには、MATLAB が描画できる領域も含まれます。ただし、タイトル バー、メニュー バー、ツール バー、および外周は含まれません。ウィンドウ全体を配置するには、OuterPosition プロパティを使用します。

Renderer

painters | zbuffer | OpenGL

画面と印刷に対して使用されるレンダリング方法。MATLAB グラフィックスをレンダリングする手法を選択します。選択肢は以下になります。

  • painters — 単純なグラフィックス オブジェクトや小さなグラフィックスのみが Figure に含まれる場合、MATLAB で使用されるこのオリジナルのレンダリング手法を使用するとグラフをより高速に描画できます。

  • zbuffer — オブジェクトをピクセル単位で色付けし、MATLAB は表示されているピクセルのみを描画する (したがって、前後の並べ替えエラーが排除される) ため、この方法を使用すると、MATLAB はグラフィックス オブジェクトをより高速かつ正確に描画できます。MATLAB の表示が複雑な場合にこの手法を使用すると、多量のシステム メモリを消費する可能性があることに注意してください。

  • OpenGLOpenGL® は、多くのコンピューター システムで使用できるレンダラーです。このレンダラーは、painterszbuffer よりも高速で、システムによっては、MATLAB がグラフィックス ハードウェアにアクセスできる場合もあります。

OpenGL のハードウェアによる実装とソフトウェアによる実装の比較

OpenGL の実装方法には、ハードウェアとソフトウェアの 2 種類があります。

ハードウェアによる実装は、性能の向上のために特殊なグラフィックス ハードウェアを使用します。そのため、ソフトウェア版よりもかなり高速です。多くのコンピューターではこの特殊なハードウェアがオプションとして用意されています。また、工場出荷時に既にこのハードウェアが搭載されている場合もあります。

ソフトウェアによる OpenGL 実装は、MATLAB Version 5.0 以上で使用可能な Zbuffer レンダラーとよく似ています。ただし、一般的には OpenGL のほうが、Zbuffer よりも優れたパフォーマンスを提供します。

OpenGL 追加オプション

OpenGL は、MATLAB を実行するすべてのコンピューター上で使用できます。MATLAB は、OpenGL のハードウェア アクセラレータ版を使用できる場合、そのハードウェアを自動的に検出します。ハードウェア アクセラレータ版を使用できない場合、MATLAB ではソフトウェア版が使用されます。ただし、OpenGL がサポートされていない Macintosh システムは除きます。

以下のソフトウェア版を使用できます。

  • UNIX® システムでは、MATLAB は、配布されている MATLAB に含まれている OpenGL のソフトウェア版を使用します。

  • Windows では、OpenGL はオペレーティング システムの一部として使用できます。OpenGL による問題が生じた場合には、使用しているグラフィックス ドライバーのベンダーに連絡し、最新の認定バージョンの OpenGL を入手してください。

  • Macintosh システムでは、ソフトウェア版の OpenGL は使用できません。

MATLAB は、使用可能な OpenGL ライブラリを検出できない場合、警告を出力します。

ハードウェア アクセラレータ版またはソフトウェア版の選択 OpenGL

MATLAB では、ハードウェア アクセラレータ版とソフトウェア版の OpenGL を切り替えられます。ただし、Windows システムと UNIX システムでは、動作が次のように異なります。

  • Windows システムでは、MATLAB セッション中、いつでもソフトウェア版とハードウェア版を切り替えられます。

  • UNIX システムでは、MATLAB が OpenGL を初期化する前に、OpenGL の版を設定しなければなりません。したがって、opengl ソフトウェアを呼び出す前に、opengl info コマンドの発行やグラフの作成はできません。ハードウェア アクセラレータ版の OpenGL を再度有効にするには、MATLAB を再起動しなければなりません。

  • Macintosh システムでは、ソフトウェア版の OpenGL は使用できません。

ハードウェア版の OpenGL を使用しない場合にオブジェクトの透明性を使用する場合は、次のコマンドを使用できます。

opengl software 

このコマンドを発行すると、MATLAB にソフトウェア OpenGL の使用を強制できます。ソフトウェア OpenGL は、ハードウェア アクセラレータ版の OpenGL が正しく機能しない場合に OpenGL レンダラーを必要とするイメージ、パッチ、または表面の透明度を使用する場合に役立ちます。ハードウェア OpenGL を再度有効にするには、次のコマンド、

opengl hardware 

を、Windows システム上で発行するか、UNIX システムでは MATLAB を再起動します。

既定の設定では、MATLAB はハードウェア アクセラレータ版の OpenGL を使用します。

詳細は、opengl のリファレンス ページを参照してください。

OpenGL ライブラリ バージョンの決定

システム上で MATLAB が使用している OpenGL ライブラリのバージョンおよびベンダーを確認するには、MATLAB プロンプトに次のコマンドを入力します。

opengl info

返された情報には、MATLAB が OpenGL のソフトウェア版を使用している (Software = true) かハードウェア アクセラレータ版を使用している (Software = false) かを示す行が含まれています。

また、このコマンドは、MATLAB が使用している特定のライブラリで使用可能な OpenGL 仕様の拡張子である文字列も返します。バグをレポートする際には、この情報を含めるようにしてください。

opengl info コマンドを発行すると、MATLAB は OpenGL を初期化する点に注意してください。

OpenGL とその他の MATLAB レンダラー

OpenGL で作成された描画と他のレンダラーで作成された描画には、いくつかの相違点があります。OpenGL に固有の相違点は以下のとおりです。

  • OpenGL は、カラーマップの内挿を行いません。インデックス付きカラー、内挿された面、またはエッジの色付けを使用して、表面またはパッチを作成した場合、OpenGL はカラーマップではなく、RGB カラー キューブを使用して色を内挿します。

  • OpenGL では、Surface および PatchFaceLighting プロパティと EdgeLighting プロパティに対して phong 値はサポートされていません。

  • OpenGL は、対数スケールの軸をサポートしていません。

  • OpenGL と Zbuffer のレンダラーは、モニター上と同様に、オブジェクトを前から後ろの順に並べ替えて表示します。また、線と面がモニター上の同一場所にある場合、常に線が面の前面に描画されます。Painters は、子オブジェクトの順に (指定された順序で) 並べ替えします。

XServer 接続が失われた

Linux® または Macintosh システムを使用しているときに、XServer への接続が切れた場合、MATLAB はセグメンテーション違反でクラッシュすることがあります。これが発生した場合は、システムに最新の XServer がインストールされていることを確認してください。

ソフトウェア OpenGL を使用し、Linux システムの OpenGL ドライバーをアップグレードしてみることもできます。

以下の回避策を試してください。

  1. XServer を最新バージョンにアップグレードする

  2. OpenGL ドライバーを最新バージョンにアップグレードする

  3. 次のコマンドを入力して ソフトウェア OpenGL に切り替える

    opengl software
RendererMode

{auto} | manual

レンダラーの自動選択またはユーザーによる選択。MATLAB が Figure ウィンドウの内容に基づいて Renderer を選択するかどうか、または Renderer を変更しない必要があるかどうかを指定します。

RendererMode プロパティが auto である場合、MATLAB は Figure 内のグラフィックス オブジェクトのサイズと複雑さに基づいて、画面表示用と印刷用のレンダリング手法を選択します。

Z-buffer による Figure からの印刷出力の速度は、painters のレンダリング手法より格段に低速であり、結果として大きな PostScript® ファイルとなります。このため、印刷用の場合でレンダリングが画面のレンダリングよりも複雑な場合には、MATLAB によってレンダリング手法が zbuffer に切り替えられます。ただし、出力は常に画面上の出力と一致しています。OpenGL でも同様で、zbuffer レンダラーによって生成された出力と同様の print コマンドの -r オプションで指定された解像度のビットマップによる出力となります。

OpenGL レンダラーの自動選択の基準

RendererMode プロパティが auto である場合、MATLAB は、次の基準に基づいて、OpenGL レンダラーを選択するかどうかを決定します。

関数 opengl の自動選択モードが autoselect のとき、以下の条件が満たされる場合に MATLAB は OpenGL を選択します。

  • ホスト コンピューターに OpenGL がインストールされており、そのホスト コンピューターが True Color モードである場合 (OpenGL は 8 ビット カラー モードを完全にはサポートしていません)。

  • Figure に対数軸が含まれていない場合 (OpenGL は対数軸をサポートしていません)。

  • MATLAB が Figure の内容に基づいて zbuffer を選択する場合。

  • Patch オブジェクト面の頂点が 3 つ以下の場合 (パッチ モザイクの OpenGL 実装によっては、不安定なものがあります)。

  • Figure に含まれる Uicontrol が 10 個未満の場合 (Uicontrol 周辺の OpenGL クリッピングは低速なため)。

  • Line オブジェクトがマーカーを使用していない場合 (マーカー描画は低速なため)。

  • Phong 光源が指定されていない場合 (OpenGL は Phong 光源をサポートしていません。Phong 光源を指定している場合、MATLAB は ZBuffer レンダラーを使用します)。

    または

  • Figure オブジェクトが透明性を使用する場合 (MATLAB レンダラーで透明性をサポートするのは OpenGL のみです)。

RendererMode プロパティが manual である場合、MATLAB は、Figure の内容の変化にかかわらず、Renderer を変更しません。

Resize

{on} | off

ウィンドウのサイズ変更モード。マウスを使って Figure ウィンドウをサイズ変更できるかどうかを決定します。on の場合、ウィンドウのサイズ変更が可能です。off の場合はサイズ変更できません。Resizeoff の場合、Figure ウィンドウにはサイズ変更用のコントロール (Figure の隅のボックスなど) は表示されず、ウィンドウのサイズ変更ができないことがわかります。

ResizeFcn

関数ハンドル | 関数ハンドルと追加の引数をもつセル配列 | 文字列 (推奨しません)

ウィンドウ サイズ変更のコールバック関数。Figure ウィンドウのサイズ変更時および Figure の作成時に実行されます。Figure の Position プロパティをクエリして、Figure の新しいサイズと位置を確認することができます。コールバック ルーチンの実行中に、サイズ変更された Figure のハンドル番号は、ルートの CallbackObject プロパティ (関数 gcbo を使用して参照できます) を通してのみアクセス可能です。

ResizeFcn を使用すると、MATLAB の Position/Units の枠組みで直接サポートされていない GUI のレイアウトを保持できます。

たとえば、ピクセル単位で一定の高さにあり、Figure の上端で常に Figure の幅に一致するオブジェクトをもつ GUI のレイアウトを考えます。以下の ResizeFcn はこれを満たします。Tag'StatusBar' で 20 ピクセルの高さにあり、Figure と同じ幅で、Figure の上端に取り付けられた uicontrol を保持します。Uicontrol のハンドル番号を取るために、Tag プロパティを使用し、Figure のハンドル番号を取るために関数 gcbo を使用していることに注意してください。Figure の Units に関連付けられた防衛的プログラミングにも注意してください。この Units は、コールバックが正しく動作するためにピクセルを単位としている必要がありますが、コールバックが終了すると以前の値に戻ります。

u = findobj('Tag','StatusBar');
fig = gcbo;
old_units = get(fig,'Units');
set(fig,'Units','pixels');
figpos = get(fig,'Position');
upos = [0, figpos(4) - 20, figpos(3), 20];
set(u,'Position',upos);
set(fig,'Units',old_units);

ResizeFcn コールバック内で Figure の Position を変更できますが、ResizeFcn はその結果として再度呼び出されません。

PaperPositionMode プロパティを manual に設定し、サイズ変更関数を定義した場合は、print コマンドによって、ResizeFcn が呼び出されることに注意してください。print コマンドにサイズ変更関数を呼び出されないようにするには、PaperPositionModeauto に設定します。

GUI に関数 resize を実装する方法の例は、「はじめに」を参照してください。

関数ハンドルを使用してコールバック関数を定義する方法の詳細は、「関数ハンドル コールバック」を参照してください。

Selected

on | off

選択されたオブジェクト。 このプロパティは、Figure が選択されているかどうかを示します。たとえば、このプロパティを設定するために、ButtonDownFcn を定義すると、ユーザーはマウスでオブジェクトを選択することができます。

SelectionHighlight

{on} | off

Figure は、選択状態を示しません。

SelectionType

{normal} | extend | alt | open

マウスの選択タイプ。MATLAB は、このプロパティを使用して、Figure ウィンドウ内で最後にマウス ボタンがクリックされたときの情報を提供します。この情報は、行われた選択のタイプを示します。選択タイプは、ユーザー インターフェイス ソフトウェアからの特定の応答に MATLAB が通常関連付けるアクションです (たとえば、グラフィックス オブジェクトのシングルクリックで移動モードまたはサイズ変更モードに移行したり、ファイル名のダブルクリックでファイルを開けるなど)。

これらの選択で要求される物理的なアクションは、プラットフォームによって異なります。ただし、どのプラットフォーム上にもすべての選択タイプが存在します。

選択タイプ

Microsoft Windows

X-Windows

Normal

左マウス ボタンをクリック

左マウス ボタンをクリック

Extend

Shift キーを押しながら左マウス ボタンをクリック、または左右のマウス ボタンを同時にクリック

Shift キーを押しながら左マウス ボタンをクリック、または中央のマウス ボタンをクリック

Alternate

Control キーを押しながら左マウス ボタンをクリック、または右ボタンをクリック

Control キーを押しながら左マウス ボタンをクリック、または右ボタンをクリック

Open

任意のマウス ボタンをダブルクリック

任意のマウス ボタンをダブルクリック

    メモ:   Enable プロパティが on である uicontrols では、Ctrl キーを押しながら左クリック、または Shift キーを押しながら左クリックすると、Figure のSelectionType プロパティが normal に設定されます。Enable プロパティが on であるリスト ボックス uicontrol は、ダブルクリックの 2 番目のクリックで Figure の SelectionType プロパティが open に設定されます。Enable プロパティが inactive または off である uicontrols 上でのすべてのクリック、または Enable プロパティが on である uicontrols 上でのすべての右クリックは、Figure の SelectionType プロパティを前述の表で示すとおりに設定します。

Tag

文字列

ユーザー指定のオブジェクトのラベル。ユーザー指定のラベルをもつグラフィックス オブジェクトを識別する方法を提供します。既定の設定は空の文字列です。

Tag プロパティと関数 findobj を使用して、プロット階層内の特定オブジェクトを操作します。

たとえば、ユーザーのアクションによって現在の Figure が変更されている可能性があるにもかかわらず、特定の Figure にファイルからのすべてのグラフィックスを直接出力するとします。そのためには、Tag をもつ Figure を特定します。

figure('Tag','Plotting Figure')

そして、描画を開始する前に、関数 findobjTag を検索して、その Figure を現在の Figure にします。

figure(findobj('Tag','Plotting Figure'))
Toolbar

none | {auto} | figure

[Figure] ツール バーの表示の制御。MATLAB が既定の [Figure] ツール バーを Figure 上に表示するかどうかを制御します。使用可能な値は以下のとおりです。

  • none — [Figure] ツール バーを表示しない。

  • auto — [Figure] ツール バーを表示するが、uicontrol が Figure に追加された場合には、[Figure] ツール バーを削除する。

  • figure — [Figure] ツール バーを表示する。

このプロパティは、[Figure] ツール バーにのみ影響します。他のツール バー ([カメラ] ツール バーや [プロット編集] ツール バーなど) には影響しません。Figure の [表示] メニューから [Figure ツール バー] を選択すると、このプロパティが関数 figure に設定されます。

ウィンドウの WindowStyle'modal' に変更すると、ツール バーとメニュー バーが (もしあれば) 両方とも非表示になります。WindowStyle'modal' から 'normal' または 'docked' に変更すると、Figure のツール バーとメニュー バーが表示されます。

Type

文字列 (読み取り専用)

オブジェクトのクラスグラフィックス オブジェクトのクラスを識別する文字列。このプロパティを使用して、プロット階層内にある特定のタイプのすべてのオブジェクトを見つけます。Figure の場合、Type は常に 'figure' です。

UIContextMenu

Uicontextmenu オブジェクトのハンドル

コンテキスト メニューと Figure の関連付け。このプロパティは、Figure 内で作成した Uicontextmenu オブジェクトのハンドルを割り当てます。コンテキスト メニューを作成するには、関数 uicontextmenu を使用します。MATLAB は、Figure 上で右マウス ボタンをクリックしたときに、コンテキスト メニューを表示します。

Units

inches | centimeters | normalized | points | {pixels} | characters

測定の単位。サイズや位置データを解釈するために、MATLAB が使用する単位を指定します。すべての単位は、ウィンドウの左下隅から測定されます。

  • normalized — Figure ウィンドウの左下隅を (0,0) に、右上隅を (1.0,1.0) にマッピングします。

  • inchescentimeters、および points — 絶対単位です。1 ポイント = 1/72 インチ

  • pixels — 画面の解像度に依存するサイズ。

  • characters — 既定のシステム フォントの文字サイズに基づきます。1 characters 単位の幅は、文字 x の幅で、1 characters 単位の高さはテキスト 2 行のベースライン間隔です。

このプロパティは、CurrentPoint プロパティと Position プロパティに影響を与えます。Units 値を変更した場合、Units が既定値であることを前提としている他の関数に影響を及ぼさないように、計算終了後に元の既定値に戻すことを推奨します。

オブジェクトの作成中にプロパティ名とプロパティ値の組み合わせとして単位を指定するとき、これらの単位を使用してプロパティを指定する前に、Units プロパティを設定しなければなりません。

UserData

行列

ユーザー指定のデータ。Figure オブジェクトと関連付けるデータ。既定値は空の配列です。MATLAB はこのデータを使用しませんが、set コマンドや get コマンドを使用するとこのデータにアクセスできます。

Visible

{on} | off

オブジェクトの可視性Visible プロパティは、オブジェクトを画面上に表示するかどうかを決定します。Figure の Visibleプロパティが off の場合、Figure ウィンドウ全体が非表示になります。

ウィンドウ ボタンのプロパティの使用に関する注意事項

ウィンドウ ボタンのコールバック関数では、関数 drawnow または関数 pause を呼び出して表示を更新することが必要となる場合があります。その場合、MATLAB は、すべてのイベントを待ち行列 (キュー) で処理します。イベント キューの処理においては、ウィンドウ ボタンのコールバック関数の再入が発生する可能性があります。たとえば、WindowButtonDownFcn の関数 drawnow により、WindowButtonDownFcn の最初の呼び出しが終了する前に、これが再度呼び出されることがあります。そのため、再入を処理するためのコードを作成し、再入中に状態が変化する可能性のあるグローバル変数には依存しないようにする必要があります。

Figure の Interruptible プロパティおよび BusyAction プロパティを使用して、イベント間の相互作用を制御できます。

WindowButtonDownFcn

関数ハンドル | 関数ハンドルと追加の引数をもつセル配列 | 文字列 (推奨しません)

ボタンを押したときのコールバック関数。ポインターが Figure ウィンドウ内にある場合にユーザーがマウスボタンをクリックすると、実行します。使用例は、WindowButtonMotionFcn プロパティを参照してください。

    メモ:   Macintosh システムで 2 つボタンまたは 3 つボタンのマウスを使用している場合、右ボタンと中央ボタンの押下は必ずしもレポートされません。右ボタンと中央ボタンの押下のレポートは、マウスのカーソルの下に新しい Figure ウィンドウが表示され、マウスを移動せずにクリックした場合のみに行われます。この場合、WindowButtonDownFcn が動作するためには、次のいずれかを実行する必要があります。

    • Figure の作成後にマウスを移動し、任意のマウス ボタンをクリックする

    • 左マウス ボタンをクリックしながら Shift キーまたは Ctrl キーを押下し、selection types の拡張および変更を実行する

    左マウス ボタン (または単一のマウス ボタン) の押下は、上記のアクションを実行しなくても機能します。

関数ハンドルを使用してコールバック関数を定義する方法の詳細は、「関数ハンドル コールバック」を参照してください。

WindowButtonMotionFcn

関数ハンドル | 関数ハンドルと追加の引数をもつセル配列 | 文字列 (推奨しません)

マウスを移動したときのコールバック関数。ポインターが Figure ウィンドウ上を動くと実行します。WindowButtonMotionFcn は、関数ハンドルとして定義する必要があります。この関数は、少なくとも 2 つの入力引数 (キーを離す操作に関連付けられた Figure のハンドルとイベント構造体) を定義しなければなりません。

関数ハンドルを使用してコールバック関数を定義する方法の詳細は、「関数ハンドル コールバック」を参照してください。

すべてのウィンドウ ボタンのプロパティの使用例

エディターで表示するにはこちらをクリックしてくださいエディターで表示するにはこちらをクリックしてください — この例では、マウスの移動を使用して、線を描画することができます。ここでは、3 つのウィンドウ ボタン関数をすべて使用します。

例を実行するにはこちらをクリックしてください例を実行するにはこちらをクリックしてください — 座標軸上で左マウス ボタンをクリックし、カーソルを移動します。線の端点を左クリックして定義し、描画モードを終了するために右クリックします。

    メモ:   一部のコンピューター システムでは、Figure 内でのマウスの移動がないにもかからわず、Figure の作成時に WindowButtonMotionFcn が実行される場合もあります。

WindowButtonUpFcn

関数ハンドル | 関数ハンドルと追加の引数をもつセル配列 | 文字列 (推奨しません)

マウス ボタンを離したときに実行されるコールバック関数。マウスボタンを離すと、実行します。WindowButtonUpFcn は、関数ハンドルとして定義する必要があります。この関数は、少なくとも 2 つの入力引数 (キーを離す操作に関連付けられた Figure のハンドルとイベント構造体) を定義しなければなりません。

ボタンを離すイベントは、先行してボタンを押すイベントが発生した Figure ウィンドウに関連付けられます。そのため、ボタンを離すときに、Figure ウィンドウ内にポインターがある必要はありません。

WindowButtonDownFcn または WindowButtonMotionFcn によって定義されたコールバック ルーチンが、drawnow コマンドを含む場合や、drawnow コマンドを含み、Interruptible プロパティが off である他の関数を呼び出す場合、WindowButtonUpFcn が呼び出されないことがあります。Interruptibleon に設定することで、この問題を回避できます。

関数ハンドルを使用してコールバック関数を定義する方法の詳細は、「関数ハンドル コールバック」を参照してください。

WindowKeyPressFcn

関数ハンドル | 関数ハンドルと追加の引数をもつセル配列 | 文字列 (推奨しません)

Figure ウィンドウのキー プレス コールバック。キーを押すと、実行します。これは、Figure ウィンドウまたは Figure ウィンドウの子のいずれかにフォーカスがあるときにキーを押すと呼び出されるコールバック関数です。WindowKeyPressFcn は、関数ハンドルとして定義する必要があります。この関数は、少なくとも 2 つの入力引数 (キーを離す操作に関連付けられた Figure のハンドルとイベント構造体) を定義しなければなりません。

関数ハンドルを使用してコールバック関数を定義する方法の詳細は、「関数ハンドル コールバック」を参照してください。

このプロパティに対してコールバックがまったく指定されていない場合 (既定状態)、MATLAB はすべてのキー押下をコマンド ウィンドウに渡します。一方、このプロパティに対してコールバックを定義した場合には、Figure は各キーの押下でフォーカスを維持し、各キーの押下により指定のコールバックを実行します。

WindowKeyPressFcn イベント構造体

コールバックが関数ハンドルとして指定された場合、MATLAB はそのコールバックに対して以下のフィールドを含む構造体を渡します。

フィールド

内容

Character

キーを離した結果として表示される文字です (空または印刷不能文字の場合もあります)。

Key

離されるキーです。キーに刻印された小文字のラベルまたは説明用の文字列によって識別されます。

Modifier

離される 1 つまたは複数の修飾キー (つまり、controlaltshift) の名前が格納されるセル配列です。Macintosh コンピューターの場合は、command 修飾キーを離したときに 'command' が格納されます。

詳細と使用例は、KeyPressFcn プロパティの説明を参照してください。

WindowKeyReleaseFcn

関数ハンドル | 関数ハンドルと追加の引数をもつセル配列 | 文字列 (推奨しません)

Figure ウィンドウのキーを離したときに実行されるコールバック関数。キーを離すと、実行します。これは、Figure ウィンドウまたは Figure ウィンドウの子のいずれかにフォーカスがあるときにキーを離すと呼び出されるコールバック関数です。WindowKeyReleaseFcn は、関数ハンドルとして定義する必要があります。この関数は、少なくとも 2 つの入力引数 (キーを離す操作に関連付けられた Figure のハンドルとイベント構造体) を定義しなければなりません。

関数ハンドルを使用してコールバック関数を定義する方法の詳細は、「関数ハンドル コールバック」を参照してください。

WindowKeyReleaseFcn イベント構造体

コールバックが関数ハンドルとして指定された場合、MATLAB はそのコールバックに対して以下のフィールドを含む構造体を渡します。

フィールド

内容

Character

キーを離した結果として表示される文字です (空または印刷不能文字の場合もあります)。

Key

離されるキーです。キーに刻印された小文字のラベルまたは説明用の文字列によって識別されます。

Modifier

離される 1 つまたは複数の修飾キー (つまり、controlaltshift) の名前が格納されるセル配列です。Macintosh コンピューターの場合は、command 修飾キーを離したときに 'command' が格納されます。

詳細と使用例は、KeyReleaseFcn プロパティの説明を参照してください。

WindowScrollWheelFcn

関数ハンドル | 関数ハンドルと追加の引数をもつセル配列 | 文字列 (推奨しません)

マウスのスクロール ホイールに対する応答。Figure にフォーカスがあるときにマウスのホイールがスクロールされた場合に実行します。MATLAB は、マウスのホイールのクリック 1 回ごとにコールバックを実行します。

別のオブジェクトが MATLAB からこのイベントを取り込むことができることに注意してください。たとえば、マウスのスクロール ホイール イベントをリスニングしている Java® または ActiveX® コントロール オブジェクトが Figure に含まれる場合、これらのオブジェクトはこのイベントを消費し、WindowScrollWheelFcn の実行を回避することができます。

このプロパティには、既定のコールバックは定義されていません。

WindowScrollWheelFcn イベント構造体

コールバックが関数ハンドルの場合、MATLAB は以下のフィールドを含むコールバック関数に構造体を渡します。

フィールド

内容

VerticalScrollCount

スクロール ホイールのクリック数を示す正または負の整数。正の値は、下方向にスクロールされたホイールのクリックを示します。負の値は、上方向にスクロールされたホイールのクリックを示します。

VerticalScrollAmount

スクロール ホイールのクリックごとにスクロールされる行数に関する現在のシステム設定。スクロールに関するマウス プロパティ設定が One screen at a time の場合、VerticalScrollAmount は値 1 を返します。

他のプロパティに対する影響

  • CurrentObject プロパティ — マウスのスクロールではこの Figure プロパティは更新されません。

  • CurrentPoint プロパティ — WindowScrollWheelFcn プロパティに対してコールバックが定義されていない場合、スクロール ホイールの回転では、MATLAB は CurrentPoint プロパティを更新しません。ただし、WindowScrollWheelFcn プロパティに対してコールバックが定義されている場合、MATLAB は、コールバックを実行する直前に CurrentPoint プロパティを更新します。これにより、マウスのスクロールが発生したポイントを調べることができます。

  • HitTest プロパティ — Figure の HitTest プロパティ設定にかかわらず、WindowScrollWheelFcn コールバックが実行されます。

  • SelectionType プロパティ — WindowScrollWheelFcn コールバックは、このプロパティに対して影響はありません。

VerticalScrollCount の戻り値

ユーザーがマウスのスクロール ホイールを 1 クリックずつ動かすと、MATLAB は、スクロールの方向に応じて +/- 1 ずつカウントをインクリメントします (スクロール ダウンの方向が正)。MATLAB が WindowScrollWheelFcn コールバックを呼び出すと、カウンターはリセットされます。多くの場合、戻り値の絶対値は 1 となります。ただし、WindowScrollWheelFcn コールバックが値を返すまでに長い時間を要する場合や、ユーザーがスクロール ホイールを非常に高速に回転させた場合には、戻り値の絶対値が 1 より大きくなる場合もあります。

VerticalScrollCount から実際に返される値は、前回の処理以降に発生したスクロール ホイールの全クリックの代数和です。これにより、コールバックがユーザーのアクションに正しく応答することができます。

エディターで表示するにはこちらをクリックしてくださいエディターで表示するにはこちらをクリックしてください — この例では、関数のグラフを作成し、マウスのスクロール ホイールを使用して、数学関数の評価範囲の変更を行います。また、グラフを更新し、スクロール ホイールを回転させたときの新たな限度を反映します。

例を実行するにはこちらをクリックしてください例を実行するにはこちらをクリックしてください — Figure 上にマウスを置き、マウス ホイールをスクロールさせます。

関連情報

関数ハンドルを使用してコールバック関数を定義する方法の詳細は、「関数ハンドル コールバック」を参照してください。

WindowStyle

{normal} | modal | docked

ノーマル、モーダル、またはドッキング可能な場合のウィンドウの動作WindowStylemodal である場合は、次のようになります。

  • Figure ウィンドウが表示されている場合、すべての MATLAB ウィンドウ上のすべてのキーボード イベントとマウス イベントをトラップします。

  • MATLAB 以外のアプリケーションのウィンドウには影響しません。

  • モーダルな Figure は、すべての通常の Figure と MATLAB コマンド ウィンドウの上に重なったままになります。

  • 複数のモーダルなウィンドウが存在する場合、最後に作成されたウィンドウがフォーカスされ、他のすべてのウィンドウの前面に表示されます。この状態は、不可視になるか、WindowStyle normal に戻るか、削除されるまで継続します。継続が終了した場合、フォーカスは、最後にフォーカスされたウィンドウに戻ります。

他のウィンドウと連動させずに、ユーザーに応答を強制するダイアログ ボックスを作成するには、モーダルな Figure を使用します。Figure にフォーカスがある状態で Ctrl + C キーを押すと、WindowStyle modal 状態のすべての Figure が WindowStyle normal に戻るため、コマンド ラインでの入力ができるようになります。

不可視なモーダル Figure

WindowStyle modal および Visible の状態の Figure は、可視になるまでモーダルな動作は行わないため、modal なウィンドウを破壊する代わりに非表示にして後で再利用できます。

モーダル Figure のスタック順序

WindowStyle modal を使用して Figure を作成すると、その作成されたウィンドウは、既存の Figure ウィンドウの上に重ねて表示されます。この一番上に表示されたウィンドウがモーダルな状態である限り、既存のウィンドウへのアクセスができなくなります。ただし、モーダルな Figure が表示された後に作成された新規の Figure (たとえば、モーダル GUI により作成されたプロットなど) は、その上に重ねられ、アクセスできます。これらも、同様にモーダルになることができます。

モードの変更

Figure の WindowStyle は、Figure が可視な場合や子オブジェクトを含む場合を含め、いつでも変更できます。ただし、ノーマル ウィンドウやモーダル ウィンドウのウィンドウ システムの実装の状態によっては、このような場合にモードを変更すると、Figure の点滅や非表示後に再表示される現象などが発生する場合もあります。視覚的に最良な結果を得るためには、WindowStyle の設定は、Figure の作成時や不可視時に行う必要があります。

モーダル Figure のウィンドウ装飾

モーダルな Figure は、関数 uimenu の子や組み込みのメニュー、ツール バーなどを表示しませんが、モーダルな Figure 内で Uimenu を作成したり、Uimenu の子をもつ Figure で WindowStylemodal に変更したりするのは誤りではありません。Uimenu オブジェクトが存在し、それらのハンドルは Figure によって保持されています。Figure の WindowStylenormal にリセットすると、Uimenu が表示されます。

ドッキングした WindowStyle

WindowStyledocked に設定すると、Figure はデスクトップまたはドキュメント ウィンドウにドッキングされます。次のコマンドを発行すると、

set(figure_handle,'WindowStyle','docked')

MATLAB は、figure_handle で識別される Figure をドッキングし、DockControls プロパティが off の場合には、このプロパティを on に設定します。

WindowStyledocked の場合、DockControls プロパティを off に設定することはできない点に注意してください。

Figure 上で関数 reset を呼び出しても、WindowStyle プロパティの値は変更されません。

WVisual

識別子文字列 (Windows のみ)

Figure のピクセル形式の指定。現在の表示設定、システムで使用可能なグラフィックス ハードウェア、および Figure のグラフィックスの内容に基づいて、Figure のピクセル形式は MATLAB によって自動的に選択されます。

通常、MATLAB は、与えられた情況での使用に最も適したピクセル形式を選択します。ただし、グラフィックス オブジェクトが正しく描画されていない場合には、別のピクセル形式を選び直して表示結果を改善できる場合もあります。詳細は、「WVisual 文字列について」を参照してください。

ウィンドウ システムで使用可能なピクセル形式のクエリ

MATLAB 用にシステムで使用可能なピクセル形式の内容を調べるには、次のステートメントを使用できます。

set(gcf,'WVisual')

MATLAB は、現在の Figure に対して現在使用可能なピクセル形式のリストを返します。たとえば、標準的なリストの最初の 3 つのエントリは以下のようになります。

01 (RGB 16 bits(05 06 05 00) zdepth 24, Hardware Accelerated, OpenGL, GDI, Window)

02 (RGB 16 bits(05 06 05 00) zdepth 24, Hardware Accelerated, OpenGL, Double Buffered, Window)

03 (RGB 16 bits(05 06 05 00) zdepth 24, Hardware Accelerated, OpenGL, Double Buffered, Window)

使用するピクセル形式を指定するには、文字列の最初の番号を使用します。以下に例を示します。

set(gcf,'WVisual','02')

これは、上記のリストの 2 番目のピクセル形式を指定しています。ピクセル形式は、システムによって異なる場合があります。

WVisual 文字列について

WVisual プロパティのクエリで返された文字列には、ピクセル形式に関する情報が含まれます。以下に例を示します。

  • RGB 16 bits(05 06 05 00) – トゥルーカラー、16 ビットの解像度 (赤 5 ビット、緑 6 ビット、青 5 ビット、アルファ (透明性) 0) を示します。MATLAB には、トゥルーカラーが必要です。

  • zdepth 24 – 画面上でのオブジェクト前面から背面位置までの並べ替えの分解能が 24 ビットであることを示します。zdepth の高い (24 または 32) ピクセル形式を選択することにより、並べ替え問題が解消される場合があります。

  • Hardware Accelerated – 一部のグラフィックス関数は、速度を向上させるために、ハードウェアで実行されることがあります。使用しているグラフィック ハードウェアと MATLAB の間で互換性がない場合は、Hardware Accelerated ではなく Generic と表示されているピクセル形式を選択してください。

  • OpenGL – OpenGL をサポートしています。詳細は、「ピクセル形式と OpenGL」を参照してください。

  • GDI – Windows の 2 次元グラフィックス インターフェイスをサポートします。

  • Double Buffered – OpenGL レンダラーのダブル バッファリングをサポートします。Figure の DoubleBuffer プロパティは、painters レンダラーにのみ適用される点に注意してください。

  • Bitmap – ビットマップへのレンダリングをサポート (ウィンドウでの描画とは異なる) しています。

  • Window – ウィンドウへのレンダリングをサポートしています。

ピクセル形式と OpenGL

システム上のハードウェア OpenGL を使用中に問題が発生した場合には、ソフトウェアで実装の汎用 OpenGL を試してください。その場合、まず、次のステートメントを使用して、MATLAB にソフトウェア版の OpenGL の使用を通知します。

opengl software

次に、最適なピクセル形式を MATLAB が選択できるようにします。

MATLAB での OpenGL の使用方法の詳細は、Renderer プロパティを参照してください。

WVisualMode

{auto} | manual (Windows のみ)

ピクセル形式の自動または手動による選択。WVisualMode は、auto (既定値) と manual の 2 つの値を取ることができます。auto モードでは、使用しているコンピューター システムおよび Figure のグラフィックスの内容に基づいて、最適なピクセル形式が MATLAB によって選択されます。manual モードでは、MATLAB による現在使用中の表示の変更は行われません。WVisual プロパティを設定すると、このプロパティが manual に設定されます。

XDisplay

表示識別子 (UNIX のみ)

MATLAB に使用するディスプレイ。このプロパティをクエリすると、MATLAB が使用しているディスプレイの名前を調べることができます。たとえば、MATLAB が mycomputer という名前のシステム上で実行されている場合、XDisplay をクエリすると、以下のような形式の文字列が返されます。

get(gcf,'XDisplay')
ans
mycomputer:0.0

Motif での XDisplay の設定

コンピューターが Motif ベースの Figure を使用している場合、Figure の XDisplay プロパティの値を設定することによって、Figure 用に MATLAB が使用するディスプレイを指定することができます。たとえば、fred と呼ばれるシステムで現在の Figure を表示するには、次のコマンドを使用します。

set(gcf,'XDisplay','fred:0.0')
XVisual

ビジュアル識別子 (UNIX のみ)

MATLAB で使用されるビジュアルの設定MATLABXVisual プロパティに使用するビジュアル ID を設定することにより、MATLAB で使用するビジュアルを選択することができます。これは、アプリケーションを 8 ビットまたはグレースケールでテストする場合に便利です。システムで使用可能なビジュアルを調べるには、UNIX xdpyinfo コマンドを使用します。MATLAB で以下のように入力します。

!xdpyinfo

返される情報には、ビジュアル ID を示す行が含まれます。たとえば、

visual id:    0x23

このビジュアルを現在の Figure で使用するには、この ID を XVisual プロパティに設定してください。

set(gcf,'XVisual','0x23')

使用可能なビジュアルから MATLAB を使用できるビジュアルを判定するには、次のように XVisual プロパティで set コマンドを呼び出します。

set(gcf,'XVisual')

以下の出力例では、使用中のビジュアル (中かっこ内) とその他の使用可能なビジュアルが示されています。MATLAB には TrueColor ビジュアルが必要であることに注意してください。

{ 0x23 (TrueColor, depth 24, RGB mask 0xff0000 0xff00 0x00ff) }
  0x24 (TrueColor, depth 24, RGB mask 0xff0000 0xff00 0x00ff)
  0x25 (TrueColor, depth 24, RGB mask 0xff0000 0xff00 0x00ff)
  0x26 (TrueColor, depth 24, RGB mask 0xff0000 0xff00 0x00ff)
  0x27 (TrueColor, depth 24, RGB mask 0xff0000 0xff00 0x00ff)
  0x28 (TrueColor, depth 24, RGB mask 0xff0000 0xff00 0x00ff)
  0x29 (TrueColor, depth 24, RGB mask 0xff0000 0xff00 0x00ff)
  0x2a (TrueColor, depth 24, RGB mask 0xff0000 0xff00 0x00ff)

glxinfo UNIX コマンドを使用して、OpenGL レンダラーで使用可能なビジュアルの内容を確認することもできます。MATLAB で以下のように入力します。

!glxinfo

システム上の OpenGL の実装に関する情報表示の後に、glxinfo によるビジュアルのテーブルが返されます。標準的な出力の一部を以下に示します。

visual  x  bf lv rg d st colorbuffer ax dp st accumbuffer  ms  cav
 id dep cl sp sz l  ci b ro  r  g  b  a bf th cl  r  g  b  a ns b eat
---------------------------------------------------------------
-
0x23 24 tc  0 24  0 r  y  .  8  8  8  8  0  0  0  0  0  0  0  0 0 None
0x24 24 tc  0 24  0 r  .  .  8  8  8  8  0  0  0  0  0  0  0  0 0 None
0x25 24 tc  0 24  0 r  y  .  8  8  8  8  0 24  8  0  0  0  0  0 0 None
0x26 24 tc  0 24  0 r  .  .  8  8  8  8  0 24  8  0  0  0  0  0 0 None
0x27 24 tc  0 24  0 r  y  .  8  8  8  8  0  0  0 16 16 16  0  0 0 Slow

第 3 列がビジュアルのクラスです。tc は、True Color ビジュアルであることを示しています。caveat (警告) 列に Slow と表示されたビジュアルがあります。このようなビジュアルは避ける必要があります。

MATLAB が OpenGL レンダラーで既定の設定として使用するビジュアルを調べるには、MATLAB の opengl info コマンドを使用します。次のようなビジュアルのエントリがその結果として返されます。

Visual = 0x23 (TrueColor, depth 24, RGB mask 0xff0000 0xff00 0x00ff)

別の TrueColor ビジュアルを試すことにより、特定のレンダリング問題が改善することもあります。

XVisualMode

{auto} | manual (UNIX のみ)

ビジュアルの自動または手動による選択。XVisualMode は、auto (既定値) と manual の 2 つの値を取ることができます。auto モードの場合、MATLAB は、色数や OpenGL 拡張の使用可能性などに基づいて最適なビジュアルを選択します。manual モードでは、現在使用しているビジュアルの MATLAB による変更は実行されません。XVisual プロパティを設定すると、このプロパティが manual に設定されます。

参考

この情報は役に立ちましたか?