ドキュメンテーション

このページは前リリースの情報です。該当の英語のページはこのリリースで削除されています。

MATLAB Figure 内での Internet Explorer の使用

この例では、ActiveX® コントロール、Shell.Explorer を使用して HTML ビューアーを MATLAB® Figure にインクルードします。これは Microsoft® Internet Explorer® で公開されています。Figure のウィンドウ ボタン ダウン関数は、ユーザーがグラフをクリックしたときにグラフィックス オブジェクトを選択し、オブジェクトのプロパティ ドキュメンテーションを HTML ビューアーに読み込むために使用されます。

例示される手法

  • ActiveX クライアント プログラムから Internet Explorer を使用する。

  • ユーザーがクリックするオブジェクトの HTML プロパティ ドキュメンテーションを表示するウィンドウ ボタン ダウン関数を定義する。

  • ActiveX オブジェクト コンテナーのサイズも変更する Figure の関数 resize を定義する。

Figure を使用したプロパティへのアクセス

この例は、Axes オブジェクトおよび下部に HTML ビューアーを含む通常より大きな Figure ウィンドウを作成します。既定の設定では、ビューアーは URL https://www.mathworks.com を表示します。以下のプロット コマンドを実行すると、

surfc(peaks(20))

グラフが座標軸に表示されます。

グラフの任意の場所をクリックして、選択したオブジェクトのプロパティ ドキュメンテーションを確認します。

完全なコード リスト

MATLAB エディターでこの例を実装するファイルを開く、または次のリンクでこの例を実行することができます。

Figure の作成

この例は、既定の Figure サイズに基づき、Figure のサイズを決定し、ActiveX コントロールのスペースを追加します。Figure を定義するコードを次に示します。

dfpos = get(0,'DefaultFigurePosition');
hfig = figure('Position',dfpos([1 2 3 4]).*[.8 .2 1 1.65],...
   'Menu','none','Name','Create a plot and click on an object',...
   'ResizeFcn',@reSize,...
   'WindowButtonDownFcn',@wbdf,...
   'Renderer','Opengl');

Figure はまた、関数ハンドルを ResizeFcn プロパティおよび WindowButtonDownFcn プロパティに割り当てることにより、サイズ変更関数とウィンドウ ボタン ダウン関数を定義することに注意してください。コールバック関数 reSize および wbdf は、同じファイル内で入れ子にされた関数として定義されます。

ActiveX オブジェクト コンテナー サイズの計算

関数 actxcontrol は、指定された Figure 内に ActiveX コントロールを作成し、コントロールのハンドルを返します。次の情報を提供する必要があります。

  • コントロールのプログラム識別子 (関数 actxcontrollist を使って検索)

  • Figure 内のコントロール コンテナーの場所およびサイズ (ピクセル) [左、下、幅、高さ]

  • コントロールを含む Figure ハンドル:

% Calculate the container size
conSize = calcSize;
% Create the control
hExp = actxcontrol('Shell.Explorer.2',conSize,hfig);
% Specify content of html viewer
Navigate(hExp,'https://www.mathworks.com/');

入れ子関数 calcSize は、Figure の現在のサイズに基づき、オブジェクト コンテナーのサイズを計算します。calcSize はまた、次の節に説明される Figure の関数 resize に使用されます。

function conSize = calcSize
fp = get(hfig,'Position');              % Get current figure size
conSize = [0 0 1 .45].*fp([3 4 3 4]);   % Calculate container size
end % calcSize

自動サイズ変更

MATLAB では、Figure のサイズを変更し、新しいサイズに収まるように座標軸を自動的にサイズ変更できます。この例は、オブジェクトの move メソッドを使って、Figure 内の ActiveX オブジェクト コンテナーに同じようなサイズ変更動作を実装します。このメソッドにより、ActiveX オブジェクト コンテナーのサイズと場所の両方が変更可能になります (つまり、Figure の Position プロパティの設定と同等)。

Figure ウィンドウをサイズ変更すると、MATLAB ソフトウェアが Figure の ResizeFcn プロパティに割り当てられた関数を自動的に呼び出します。この例は、Figure の関数 reSize の入れ子関数 reSize を実装します。

Figure 作成時の ResizeFcn

関数 resize は、まず ActiveX オブジェクトが存在するかどうかを判断します。これは Figure が最初に作成されたときに、MATLAB ソフトウェアが Figure の関数 resize を呼び出すためです。この時点では ActiveX オブジェクトがまだ作成されていないため、関数 resize はそのまま返ります。

Figure がサイズ変更された場合

Figure のサイズを変更すると、関数 resize が以下を実行します。

  • 関数 calcSize を呼び出し、新しい Figure サイズに基づき、コントロール コンテナーの新しいサイズを計算します。

  • コントロールの move メソッドを呼び出し、新しいサイズをコントロールに適用します。

function reSize(~,~)
if ~exist('hExp','var')
   return
end
conSize = calcSize;
move(hExp,conSize);
end % reSize

グラフィックス オブジェクトの選択

この例では、Figure の WindowButtonDownFcn プロパティを使用して、Figure 内のマウス クリック イベントを処理するコールバック関数を定義します。カーソルが Figure の上にあるときにマウスの左ボタンをクリックすると、MATLAB ソフトウェアは、マウス ダウン イベントに WindowButtonDownFcn コールバックを実行します。

コールバックは、Figure の CurrentObject プロパティを照会することで、どのオブジェクトがクリックされたかを判断します。このプロパティには、最近クリックされたグラフィックス オブジェクトのハンドルが含まれています。オブジェクトのハンドルが得られたら、そのタイプを判断し、適切な HTML ページを Shell.Explorer コントロールに読み込みます。

入れ子関数 wbdf がコールバックを実装します。選択されたオブジェクトのタイプを判断すると、コントロールの Navigate メソッドを使ってそのオブジェクト タイプのドキュメンテーションを表示します。

function wbdf(~,~)
   cobj = get(hfig,'CurrentObject');
   if isempty(cobj)
   disp('Click somewhere else')
   return
   end
   pth = 'https://www.mathworks.com/help/techdoc/ref/';
   typ = get(cobj,'Type');
   switch typ
      case ('figure')
         Navigate(hExp,[pth,'figure_properties.html']);
      case ('axes')
         Navigate(hExp,[pth,'axes_properties.html']);
      case ('line')
         Navigate(hExp,[pth,'chartline_properties.html']);
      case ('image')
         Navigate(hExp,[pth,'image_properties.html']);
      case ('patch')
         Navigate(hExp,[pth,'patch_properties.html']);
      case ('surface')
         Navigate(hExp,[pth,'chartsurface_properties.html']);
      case ('text')
         Navigate(hExp,[pth,'text_properties.html']);
      case ('hggroup')
         Navigate(hExp,[pth,'group_properties.html']); 
      otherwise
         Navigate(hExp,[pth(1:end-4),'graphics-object-properties.html']);
   end
end % wbdf