主要内容

getframe

捕获轴或图形作为电影帧

描述

例子

F= getframe在当前轴作为电影帧出现在屏幕上时捕获它。F包含图像数据的结构。getframe捕获与它在屏幕上显示的大小相同的轴。它不捕获标记标签或轴轮廓之外的其他内容。

例子

F= getframe (斧头捕获由标识的轴斧头而不是现在的坐标轴。

例子

F= getframe (无花果捕获由标识的图形无花果.如果希望捕获图形窗口的整个内部,包括轴标题、标签和标记,则指定一个图形。捕获的影片帧不包括图形菜单和工具栏。

F= getframe (___矩形所定义的矩形内的区域矩形.指定矩形作为一个四元向量的形式[左下宽高].选项中的任意一个使用此选项斧头无花果输入前面语法中的参数。

例子

全部折叠

创建一个随机数据图。捕获坐标轴并返回图像数据。getframe捕获轴的内部和轴的轮廓。它不捕获扩展到坐标轴轮廓之外的内容。

plot(rand(5)) F = getframe;

F是带场的结构吗cdata其中包含捕获的图像数据。

显示捕获的图像数据imshow

图imshow (F.cdata)

创建一个表面图。捕获图形窗口的内部,不包括菜单和工具栏。

surf(peaks) F = getframe(gcf);

F是带场的结构吗cdata其中包含捕获的图像数据。

将捕获的图像数据显示在具有较暗背景的图形中imshow,所以你可以看到被捕获的区域。

图(“颜色”,[0.5 0.5 0.5]) imshow(F.cdata)

捕获轴的内部以及每个方向上30像素的边缘。为了在捕获帧中包含勾号标签,必须添加空白。根据勾号标签的大小,可能需要调整空白。

创建一个随机数据图。

情节(兰德(5))

将轴单位更改为像素,并返回当前轴的位置。位置向量的第三和第四个元素以像素为单位指定轴的宽度和高度。

绘制ax = gca;斧子。单位=“像素”;Pos = ax。位置
Pos = 73.8000 47.2000 434.0000 342.3000

创建一个四元素向量,矩形,它定义了一个矩形区域,覆盖轴和所需的边距。的前两个要素矩形指定矩形的左下角相对于坐标轴的左下角。的最后两个元素矩形指定矩形的宽度和高度。将坐标轴单位重置为的默认值“归一化”

Marg = 30;矩形=[高山草地,高山草地,pos(3) + 2 *高山草地,pos(4) + 2 *玛格);F = getframe(gca,rect);斧子。单位=“归一化”

将捕获的图像数据显示在具有较暗背景的图形中imshow,所以你可以看到被捕获的区域。

图(“颜色”,[0.5 0.5 0.5]) imshow(F.cdata)

计算轴周围的边距,以便捕获的图像数据包括标题、轴标签和勾号标签。

创建一个带有标题和x设在标签。

情节(兰德(5))包含(“x”)标题(“随机数据图”

改变轴单位像素和存储位置TightInset属性值。的TighInset属性是形式为的四元素向量[左下右上].这些值是用于标记值和文本标签的轴周围的边距。

绘制ax = gca;斧子。单位=“像素”;pos = ax.Position;ti = ax.TightInset;

创建一个四元素向量,矩形,它定义了一个矩形区域,覆盖轴和自动计算的边缘。的前两个要素矩形指定矩形的左下角相对于坐标轴的左下角。的最后两个元素矩形指定矩形的宽度和高度。

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

将捕获的图像数据显示在具有较暗背景的图形中imshow,所以你可以看到被捕获的区域。

图(“颜色”,[0.5 0.5 0.5]) imshow(F.cdata)

从R2019b开始,您可以使用tiledlayoutnexttile功能。调用tiledlayout函数创建2乘1平铺图表布局。调用nexttile函数创建坐标轴对象ax₁ax2.在每个轴上画一条直线。

Tiledlayout (2,1) ax1 = nexttile;情节(1:10“b”) ax2 = nexttile;情节(1:10“r”

捕获较低轴的内容。getframe捕捉情节的内部和边界。它不会捕获超出绘图大纲的刻度值或标签。

F = getframe(ax2);

显示捕获的图像数据imshow

图imshow (F.cdata)

记录帧山峰使用函数振动getframe在一个循环中。预先分配一个数组来存储电影帧。

Z =峰;冲浪(Z)轴手册Ax = gca;斧子。NextPlot =“replaceChildren”;循环= 40;F(loops) = struct(cdata的[],“colormap”[]);j = 1: X = sin(j*pi/10)*Z;surf(X,Z) drawnow F(j) = getframe(gcf);结束

播放电影两遍。

图;电影(无花果、F、2)

输入参数

全部折叠

要捕获的轴,指定为对象或GeographicAxes对象。如果您想捕获不是当前轴的轴,请使用此选项。

getframe捕获包含轴轮廓的最小矩形内的内容。如果要捕获所有刻度值和标签,请使用无花果输入参数代替。

例子:F = getframe(ax);

要捕获的图形,指定为数字对象。

矩形区域的捕获,指定为四元矢量的形式[左下宽高]像素.的元素定义矩形左下角的位置。位置相对于作为第一个输入参数指定的图形或轴getframe.的宽度高度元素定义矩形的尺寸。

指定图形窗口中完全包含的矩形。

输出参数

全部折叠

电影帧,返回为具有两个字段的结构:

  • cdata-图像数据以数组的形式存储uint8值。图像数据数组的大小取决于屏幕分辨率。

  • colormap-颜色图。在真彩色系统中,此字段为空。

请注意

这些是关于大小的一些重要考虑因素cdata

  • 如果查询区域的大小,说明getframe捕获(图形、轴或指定的区域)矩形),尺寸像素可能与里面的元素数不匹配cdata.这种差异是由于元素的数量cdata取决于你的屏幕分辨率(和操作系统设置),但在MATLAB像素®可能与屏幕上的实际像素不符。

  • 从R2015b开始,如果您使用的是高分辨率系统,则cdata可能比以前的版本或其他系统上的更大。

限制

  • getframe中不支持以下功能金宝appMATLAB在线™或在网络应用程序(MATLAB编译器)

    • 控件创建的图形的内容uifigure函数或图中的任何轴。

    • 捕获应用程序设计器或应用程序中的任何轴创建的应用程序的内容。

更多关于

全部折叠

像素

在Windows上,以像素为单位的距离与系统分辨率无关®麦金塔电脑系统:

  • 在Windows系统上,一个像素是1/96英寸。

  • 麦金塔电脑在系统中,一个像素是1/72英寸。

在Linux上®在系统中,像素的大小是由系统分辨率决定的。

提示

  • 为使用时最快的性能getframe,确保图形在屏幕上可见。如果图形不可见,getframe仍然可以捕获图形,但性能可能会变慢。

  • 要对图像数据的分辨率进行更多控制,请使用打印函数来代替。的cdata带有print的Output参数返回图像数据。的决议Input参数控制图像的分辨率。

R2006a之前介绍