getframe

Получите оси или фигуру как кадр фильма

Синтаксис

F = getframe
F = getframe(ax)
F = getframe(fig)
F = getframe(___,rect)

Описание

пример

F = getframe получает текущую систему координат, как это появляется на экране как кадр фильма. F является структурой, содержащей данные изображения. getframe получает оси в том же размере, что это появляется на экране. Это не получает метки в виде галочки или другое содержимое вне схемы осей.

пример

F = getframe(ax) получает оси, идентифицированные ax вместо текущей системы координат.

пример

F = getframe(fig) получает фигуру, идентифицированную fig. Задайте фигуру, если вы хотите получить целую внутреннюю часть окна фигуры, включая заголовок осей, метки и отметки деления. Полученный кадр фильма не включает панели меню фигуры и панели инструментов.

F = getframe(___,rect) получает область в прямоугольнике, заданном rect. Задайте rect как четырехэлементный вектор формы [left bottom width height]. Используйте эту опцию или с ax или с входными параметрами fig в предыдущих синтаксисах.

Примеры

свернуть все

Создайте график случайных данных. Получите оси и возвратите данные изображения. getframe получает внутреннюю часть осей и схемы осей. Это не получает содержимое, которое расширяет вне схемы осей.

plot(rand(5))
F = getframe;

F является структурой с полем cdata, которое содержит полученные данные изображения.

Отобразите полученные данные изображения с помощью imshow.

figure
imshow(F.cdata)

Создайте объемную поверхностную диаграмму. Получите внутреннюю часть окна фигуры, исключая панели меню и панели инструментов.

surf(peaks)
F = getframe(gcf);

F является структурой с полем cdata, которое содержит полученные данные изображения.

Отобразите полученные данные изображения с помощью imshow.

figure
imshow(F.cdata)

Получите внутреннюю часть оси плюс поле 30 пикселей в каждом направлении. Добавленное поле необходимо, чтобы включать метки в виде галочки в кадр получения. В зависимости от размера меток в виде галочки должна быть настроена граничная сила.

Создайте график случайных данных.

plot(rand(5))

Измените модули осей на пиксели и возвратите положение текущей системы координат. Третьи и четвертые элементы радиус-вектора задают ширину осей и высоту в пикселях.

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

   73.8000   47.2000  434.0000  342.3000

Создайте четырехэлементный вектор, rect, который задает прямоугольную область, покрывающую оси плюс желаемое поле. Первые два элемента rect задают левый нижний угол прямоугольника относительно левого нижнего угла осей. Последние два элемента rect задают ширину и высоту прямоугольника. Сбросьте модули осей к значению по умолчанию 'normalized'.

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

Отобразите полученные данные изображения с помощью imshow.

figure
imshow(F.cdata)

Вычислите поле вокруг осей так, чтобы полученные данные изображения включали заголовок, подписи по осям и метки в виде галочки.

Создайте график с заголовком и меткой оси X.

plot(rand(5))
xlabel('x values')
title('Plot of Random Data')

Измените модули осей на пиксели и сохраните Position и значения свойств TightInset для осей. Свойство TighInset является четырехэлементным вектором формы [left bottom right top]. Значения являются полями, используемыми вокруг осей для текстовых меток и значений деления.

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

Создайте четырехэлементный вектор, rect, который задает прямоугольную область, покрывающую оси плюс автоматически расчетное поле. Первые два элемента rect задают левый нижний угол прямоугольника относительно левого нижнего угла осей. Последние два элемента rect задают ширину и высоту прямоугольника.

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

Отобразите полученные данные изображения с помощью imshow.

figure
imshow(F.cdata)

Создайте фигуру с двумя подграфиками. В верхнем подграфике постройте синий график. В более низком подграфике постройте график красной линии.

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

Получите содержимое более низкого подграфика. getframe получает внутреннюю часть и границу подграфика. Это не получает значения деления или метки, которые расширяют вне схемы подграфика.

F = getframe(ax2);

Отобразите полученные данные изображения с помощью imshow.

figure
imshow(F.cdata)

Кадры записи  функции peaks, вибрирующей при помощи getframe в цикле. Предварительно выделите массив, чтобы сохранить кадры фильма.

Z = peaks;
surf(Z)
axis tight manual
ax = gca;
ax.NextPlot = 'replaceChildren';

loops = 40;
F(loops) = struct('cdata',[],'colormap',[]);
for j = 1:loops
    X = sin(j*pi/10)*Z;
    surf(X,Z)
    drawnow
    F(j) = getframe(gcf);
end

Воспроизведите фильм два раза.

fig = figure;
movie(fig,F,2)

Входные параметры

свернуть все

Оси, чтобы получить, заданный как объект осей. Используйте эту опцию, если вы хотите получить оси, который не является текущей системой координат.

getframe получает содержимое в наименьшем прямоугольнике, который заключает схему осей. Если вы хотите получить все значения деления и метки, то используйте входной параметр fig вместо этого.

Пример: F = getframe (ax);

Фигурируйте, чтобы получить, заданный как объект фигуры. Используйте gcf, чтобы получить текущую фигуру.

Пример: F = getframe (gcf);

Прямоугольная область, чтобы получить, заданный как четырехэлементный вектор формы [left bottom width height] в пикселях. left и элементы bottom задают положение левого нижнего угла прямоугольника. Положение относительно фигуры или осей, который задан как первый входной параметр к getframe. width и элементы height задают размерности прямоугольника.

Задайте прямоугольник, который полностью содержится в рамках окна фигуры.

Пример: F = getframe (gcf, [0 0 560 420]);

Выходные аргументы

свернуть все

Кадр фильма, возвращенный как структура с двумя полями:

  • cData Данные изображения, сохраненные как массив значений uint8. Размер массива данных изображения зависит от вашего разрешения экрана.

  • палитра Палитра. В системах истинного цвета это поле пусто.

Примечание

Это некоторые важные факторы о размере cdata:

  • Если вы запрашиваете размер области, которую получает getframe (или фигура, оси или область, заданная rect), размер в пикселях не может совпадать с числом элементов в cdata. Это различие - то, потому что число элементов в cdata зависит от вашего разрешения экрана (и настройки операционной системы), но пиксели в MATLAB® не могут соответствовать фактическим пикселям на вашем экране.

  • При запуске в R2015b, если вы используете систему с высоким разрешением, затем размер cdata может быть больше, чем в предыдущих релизах или в других системах.

Больше о

свернуть все

'pixels'

Расстояния в пикселях независимы от вашего системного разрешения по системам Макинтоша и Windows®:

  • В системах Windows пиксель составляет 1/72 дюйма.

  • В системах Macintosh пиксель составляет 1/72 дюйма.

В системах Linux® размер пикселя определяется вашим системным разрешением.

Советы

  • Для самой быстрой производительности при использовании getframe убедитесь, что фигура видима на экране. Если фигура не видима, getframe может все еще получить фигуру, но производительность может быть медленнее.

  • Для большего количества управления разрешением данных изображения используйте функцию print вместо этого. Выходной аргумент cdata с печатью возвращает данные изображения. Входной параметр resolution управляет разрешением изображения.

Представлено до R2006a

Была ли эта тема полезной?