getframe

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

Описание

пример

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)

Начиная в R2019b, можно отобразить мозаичное размещение графиков с помощью tiledlayout и nexttile функции. Вызовите tiledlayout функция, чтобы создать 2 1 мозаичное размещение графика. Вызовите nexttile функция, чтобы создать объекты осей ax1 и ax2. Постройте график в каждом, исключает.

tiledlayout(2,1)
ax1 = nexttile;
plot(1:10,'b')
ax2 = nexttile;
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)

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

свернуть все

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

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 значения. Размер массива данных изображения зависит от вашего разрешения экрана.

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

Примечание

Это некоторые важные соображения о размере cdata:

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

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

Больше о

свернуть все

'pixels'

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

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

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

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

Советы

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

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

Смотрите также

| | | | | |

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