Main Content

getframe

座標軸または Figure のムービー フレームとしてのキャプチャ

説明

F= getframeは、画面上に表示されている現在の座標軸をムービー フレームとしてキャプチャします。Fはイメージ データをもつ構造体です。getframeは、画面上の表示と同じサイズで座標軸をキャプチャします。目盛りラベルなど、座標軸の外枠の外側にあるコンテンツはキャプチャしません。

F= getframe(ax)は、現在の座標軸ではなくaxで指定された座標軸をキャプチャします。

F= getframe(无花果)は、无花果で指定された Figure をキャプチャします。座標軸、タイトル、ラベル、目盛りなど、Figure ウィンドウの内側全体をキャプチャする場合は、Figure を指定します。キャプチャしたムービー フレームには、Figure のメニューやツール バーは含まれません。

F= getframe(___,rect)は、rectで定義された四角形内部の領域をキャプチャします。rectは、[left bottom width height]の形式の 4 要素ベクトルとして指定します。このオプションは、前述の構文の入力引数axまたは无花果と共に使用します。

すべて折りたたむ

乱数データのプロットを作成します。座標軸をキャプチャし、イメージ データを返します。getframeは、座標軸の内側と座標軸の外枠を取得します。座標軸の外枠からはみ出したコンテンツはキャプチャしません。

plot(rand(5)) F = getframe;

Fは、キャプチャしたイメージ データを格納するフィールドcdataをもつ構造体です。

imshowを使用して、キャプチャしたイメージ データを表示します。

无花果ure imshow(F.cdata)

表面プロットを作成します。メニューとツール バーを除いて、Figure ウィンドウの内部をキャプチャします。

surf(peaks) F = getframe(gcf);

Fは、キャプチャしたイメージ データを格納するフィールドcdataをもつ構造体です。

imshowを使用して、キャプチャしたイメージ データを濃い背景色で Figure に表示すると、キャプチャした領域を確認できます。

无花果ure('Color',[0.5 0.5 0.5]) imshow(F.cdata)

座標軸の内側に加えて、各方向に 30 ピクセルのマージンをキャプチャします。キャプチャするフレーム内に目盛りラベルを含めるには、追加マージンが必要です。目盛りラベルのサイズによっては、マージンの調整が必要となる場合があります。

乱数データのプロットを作成します。

plot(rand(5))

座標軸の単位をピクセルに変更し、現在の座標軸の位置を返します。位置ベクトルの第 3 と第 4 の要素は、座標軸の幅と高さをピクセル単位で指定します。

drawnow ax = gca; ax.Units ='pixels'; pos = ax.Position
pos = 73.8000 47.2000 434.0000 342.3000

座標軸に目的のマージンを加えた四角形領域を定義する 4 要素ベクトルrectを作成します。rectの最初の 2 つの要素は、座標軸の左下隅を基準にして、四角形の左下隅の位置を指定します。rectの最後の 2 つの要素は、四角形の幅と高さを指定します。座標軸の単位を既定値'normalized'にリセットします。

marg = 30; rect = [-marg, -marg, pos(3)+2*marg, pos(4)+2*marg]; F = getframe(gca,rect); ax.Units ='normalized';

imshowを使用して、キャプチャしたイメージ データを濃い背景色で Figure に表示すると、キャプチャした領域を確認できます。

无花果ure('Color',[0.5 0.5 0.5]) imshow(F.cdata)

キャプチャするイメージ データにタイトル、軸ラベルおよび目盛りラベルが含まれるように、座標軸の周囲のマージンを計算します。

タイトルとx軸ラベルをもつプロットを作成します。

情节(兰德(5))包含('x values') title('Plot of Random Data')

座標軸の単位をピクセルに変更し、座標軸のPositionTightInsetのプロパティ値を格納します。TighInsetプロパティは、[left bottom right top]の形式の 4 要素ベクトルです。この値は、座標軸の周囲にある目盛りの値とテキスト ラベル用のマージンです。

drawnow ax = gca; ax.Units ='pixels'; pos = ax.Position; ti = ax.TightInset;

座標軸に自動計算されたマージンを加えた四角形領域を定義する 4 要素ベクトルrectを作成します。rectの最初の 2 つの要素は、座標軸の左下隅を基準にして、四角形の左下隅の位置を指定します。rectの最後の 2 つの要素は、四角形の幅と高さを指定します。

rect = [-ti(1), -ti(2), pos(3)+ti(1)+ti(3), pos(4)+ti(2)+ti(4)]; F = getframe(ax,rect);

imshowを使用して、キャプチャしたイメージ データを濃い背景色で Figure に表示すると、キャプチャした領域を確認できます。

无花果ure('Color',[0.5 0.5 0.5]) imshow(F.cdata)

R2019b 以降、関数tiledlayoutおよびnexttileを使用して、プロットをタイル表示できます。関数tiledlayoutを呼び出して、2 行 1 列のタイル表示チャート レイアウトを作成します。関数nexttileを呼び出して、axes オブジェクトax1およびax2を作成します。各座標軸にラインをプロットします。

tiledlayout(2,1) ax1 = nexttile; plot(1:10,'b') ax2 = nexttile; plot(1:10,'r')

下の座標軸のコンテンツをキャプチャします。getframeは、プロットの内部と枠線をキャプチャします。プロットの外枠を越える目盛りの値やラベルはキャプチャしません。

F = getframe(ax2);

imshowを使用して、キャプチャしたイメージ データを表示します。

无花果ure imshow(F.cdata)

getframeをループで使用して、振動する関数peaksのフレームを記録します。ムービー フレームを保存する配列を事前に割り当てます。

Z = peaks; surf(Z) axistightmanualax = gca; ax.NextPlot ='replaceChildren'; loops = 40; F(loops) = struct('cdata',[],'colormap',[]);forj = 1:loops X = sin(j*pi/10)*Z; surf(X,Z) drawnow F(j) = getframe(gcf);end

ムービーを 2 回再生します。

无花果= figure; movie(fig,F,2)

入力引数

すべて折りたたむ

キャプチャする座標軸。AxesオブジェクトまたはGeographicAxesオブジェクトとして指定します。このオプションは、現在の座標軸以外の座標軸をキャプチャする場合に使用します。

getframeは、座標軸の外枠を囲む最小の四角形の内側にあるコンテンツをキャプチャします。目盛りの値およびラベルをすべてキャプチャする場合は、代わりに入力引数无花果を使用します。

例:F = getframe(ax);

キャプチャする Figure。Figureオブジェクトとして指定します。

キャプチャする四角形の領域。[left bottom width height]の形式の 4 要素ベクトル (ピクセル単位) として指定します。leftbottomの要素は、四角形の左下隅の位置を定義します。この位置は、getframeの最初の入力引数として指定された Figure または座標軸に対する位置です。width要素とheight要素で四角形の大きさを定義します。

Figure ウィンドウ内に全体が収まる四角形を指定します。

出力引数

すべて折りたたむ

ムービー フレーム。次の 2 つのフィールドをもつ構造体として返されます。

  • cdatauint8型の値の配列として格納されるイメージ データ。イメージ データの配列のサイズは、画面の解像度によって決まります。

  • colormap— カラーマップ。トゥルーカラー システムでは、このフィールドは空になります。

メモ

cdataのサイズに関して、重要な検討事項がいくつかあります。

  • getframeがキャプチャした領域 (Figure、座標軸、あるいはrectで指定した領域) のサイズをクエリした場合、そのサイズ (ピクセル単位) がcdataの要素数と一致しないことがあります。この違いの理由は、cdataの要素数は画面の解像度 (およびオペレーティング システムの設定) によって決まるのに対して、MATLAB®でのピクセル数は画面上の実際のピクセル数に対応していない場合があるからです。

  • R2015b 以降で高解像度システムを使用している場合、cdataのサイズは、旧リリースまたは他のシステムでのサイズよりも大きくなることがあります。

制限

  • MATLAB Online™またはWeb アプリ(MATLAB Compiler)では、getframeは次の機能をサポートしていません。

    • 関数uifigureまたは Figure 内の任意の軸を使用して作成された Figure の内容のキャプチャ。

    • App Designer またはアプリ内の任意の軸を使用して作成されたアプリの内容のキャプチャ。

詳細

すべて折りたたむ

ピクセル

Windows®およびMacintoshシステムでのピクセル単位の距離は、システムの解像度に依存しません。

  • Windows システムの 1 ピクセルは 1/96 インチです。

  • Macintoshシステムの 1 ピクセルは 1/72 インチです。

Linux®システムでは、ピクセルのサイズは使用しているシステムの解像度によって決まります。

ヒント

  • getframeの使用時にパフォーマンスを最大限に高めるには、必ず Figure を画面上に表示します。Figure が表示されていない場合でもgetframeは Figure をキャプチャできますが、パフォーマンスが低下することがあります。

  • イメージ データの解像度を詳細に制御するには、代わりに関数printを使用します。print に出力引数cdataを指定すると、イメージ データを返します。入力引数resolutionは、イメージの解像度を制御します。

バージョン履歴

R2006a より前に導入