exponenta event banner

copygraphics

Копирование содержимого печати или графики в буфер обмена

Описание

пример

copygraphics(obj) копирует содержимое графического объекта, указанного obj в системный буфер обмена. Графическим объектом может быть любой тип осей, фигура, автономная визуализация, макет мозаичной диаграммы или контейнер внутри фигуры. Содержимое буфера обмена доступно для вставки в другие приложения и документы.

пример

copygraphics(obj,Name,Value) задает дополнительные параметры для копирования содержимого в буфер обмена. Например, copygraphics(gca,'Resolution',300) копирует содержимое текущих осей в буфер обмена в виде 300-DPI изображения.

Примеры

свернуть все

Создайте линейный график и получите текущие оси. Затем скопируйте содержимое осей в буфер обмена.

plot(rand(5,5))
ax = gca;
copygraphics(ax)

Figure contains an axes. The axes contains 5 objects of type line.

Отображение изображения и получение текущих осей. Затем скопируйте содержимое осей в виде 300-DPI изображения.

I = imread('peppers.png');
imshow(I)
ax = gca;
copygraphics(ax,'Resolution',300)

Figure contains an axes. The axes contains an object of type image.

Отображение графика с аннотацией, которая выходит за границы осей. Затем скопируйте содержимое рисунка.

plot(1:10)
annotation('textarrow',[0.06 0.5],[0.73 0.5],'String','y = x ')
f = gcf;
copygraphics(f)

Figure contains an axes. The axes contains an object of type line.

Отображение гистограммы и получение текущих осей. Затем скопируйте содержимое осей в виде векторной графики.

bar([10 22 31 43])
ax = gca;
copygraphics(ax,'ContentType','vector')

Figure contains an axes. The axes contains an object of type bar.

Отображение двух графиков в формате мозаичной диаграммы. Затем скопируйте оба графика в буфер обмена, передав TiledChartLayout объект для copygraphics функция.

t = tiledlayout(2,1);
nexttile
plot([1 2 3])
nexttile
plot([3 2 1])
copygraphics(t)

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line.

Если вы хотите скопировать только один из графиков, вызовите nexttile функция с аргументом возврата осей. Затем передайте оси в copygraphics функция.

Отображение диаграммы тепловых карт. Затем скопируйте диаграмму в виде векторной графики и укажите прозрачный фон.

h = heatmap(rand(10,10));
copygraphics(h,'ContentType','vector','BackgroundColor','none')

Figure contains an object of type heatmap.

Создание файла программы с именем copyapp.m отображается печать и кнопка для копирования содержимого осей в буфер обмена. В функции обратного вызова для кнопки вызовите copygraphics функция.

function copyapp
f = uifigure;
ax = uiaxes(f,'Position',[25 25 400 375]);
plot(ax,[0 0.3 0.1 0.6 0.4 1])
b = uibutton(f,'Position',[435 200 90 30],'Text','Copy Plot');
b.ButtonPushedFcn = @buttoncallback;

    function buttoncallback(~,~)
        copygraphics(ax)
    end
end

Запустите приложение, позвонив copyapp функция. При нажатии кнопки «Копировать печать» содержимое осей копируется в буфер обмена. Область вокруг осей, включая кнопку, не копируется.

copyapp

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

свернуть все

Графический объект, указанный как один из следующих объектов:

  • Оси любого типа: Axes, PolarAxes, или GeographicAxes объект.

  • Фигура, созданная с помощью figure или uifigure функция.

  • Автономная визуализация, такая как heatmap диаграмма.

  • Макет мозаичной диаграммы, создаваемый с помощью tiledlayout функция.

  • Контейнер внутри фигуры: Panel, Tab, или ButtonGroup объект.

Область захвата

copygraphics захватывает содержимое указанного объекта. Он не захватывает компоненты пользовательского интерфейса, такие как кнопки или ползунки.

Он также не захватывает соседние контейнеры или дочерние контейнеры. Например, рассмотрим рисунок, содержащий линейный график с соседней панелью, содержащей тепловую карту:

f = figure;
ax = axes(f,'Position',[0.1 0.1 0.4 0.8]);
plot(ax,[0 1])
p = uipanel(f,'Position',[0.55 0.1 0.4 0.8]);
heatmap(p,rand(10,5))

copygraphics(f)
copygraphics(p)

В предыдущем коде первый copygraphics копирует печать линии, но не тепловую карту. Второе copygraphics копирует тепловую карту, но не линейный график.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: copygraphics(gca,'Resolution',300) копирует содержимое текущих осей 300-DPI виде изображения.

Тип копируемого содержимого, указанный как один из следующих параметров:

  • 'auto' - MATLAB ® управляет тем, является ли содержимое векторной графикой или изображением.

  • 'vector' - копирует содержимое в виде векторной графики, которая может масштабироваться до любого размера.

  • 'image' - копирует содержимое в растрированное изображение.

Разрешение в точках на дюйм (DPI), указанное как целое число, большее или равное 1.

Указание разрешения не действует, если ContentType является 'vector'.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Цвет фона, указанный как 'current', 'none', триплет RGB, шестнадцатеричный цветовой код или имя цвета. Цвет фона определяет цвет поля, окружающего оси или диаграмму.

  • Значение 'current' задает цвет фона родительского контейнера.

  • Значение 'none' задает прозрачный или белый цвет фона в зависимости от значения ContentType:

    • Когда ContentType='vector', цвет фона прозрачный.

    • Когда ContentType='image', цвет фона белый.

    • Когда ContentType='auto'MATLAB задает цвет фона в соответствии с эвристикой, используемой для определения копируемого содержимого типа.

  • Можно также задать пользовательский цвет или именованный цвет.

Пользовательские цвета и именованные цвета

Триплеты RGB и шестнадцатеричные цветовые коды полезны для задания пользовательских цветов.

  • Триплет RGB - это трехэлементный вектор строки, элементы которого задают интенсивности красной, зеленой и синей составляющих цвета. Интенсивности должны находиться в диапазоне [0,1]; например, [0.4 0.6 0.7].

  • Шестнадцатеричный цветовой код - это символьный вектор или строковый скаляр, начинающийся с хэш-символа (#), за которыми следуют три или шесть шестнадцатеричных цифр, которые могут варьироваться от 0 кому F. Значения не чувствительны к регистру. Таким образом, цветовые коды '#FF8800', '#ff8800', '#F80', и '#f80' эквивалентны.

Можно также задать некоторые общие цвета по имени. В этой таблице перечислены параметры именованного цвета, эквивалентные триплеты RGB и шестнадцатеричные цветовые коды.

Имя цветаКраткое имяТриплет RGBШестнадцатеричный цветовой кодВнешность
'red''r'[1 0 0]'#FF0000'

'green''g'[0 1 0]'#00FF00'

'blue''b'[0 0 1]'#0000FF'

'cyan' 'c'[0 1 1]'#00FFFF'

'magenta''m'[1 0 1]'#FF00FF'

'yellow''y'[1 1 0]'#FFFF00'

'black''k'[0 0 0]'#000000'

'white''w'[1 1 1]'#FFFFFF'

Вот триплеты RGB и шестнадцатеричные цветовые коды для цветов по умолчанию MATLAB, используемых на многих типах графиков.

Триплет RGBШестнадцатеричный цветовой кодВнешность
[0 0.4470 0.7410]'#0072BD'

[0.8500 0.3250 0.0980]'#D95319'

[0.9290 0.6940 0.1250]'#EDB120'

[0.4940 0.1840 0.5560]'#7E2F8E'

[0.4660 0.6740 0.1880]'#77AC30'

[0.3010 0.7450 0.9330]'#4DBEEE'

[0.6350 0.0780 0.1840]'#A2142F'

Цветовое пространство сохраненного графического объекта, указанное как 'rgb' или 'gray'.

  • 'rgb' - Копирование содержимого truecolor RGB.

  • 'gray' - Преобразование содержимого в градации серого.

Ограничения

copygraphics не поддерживается в MATLAB Online™ или в веб-приложениях, размещенных на Server™ MATLAB Web App.

Альтернативная функциональность

При наведении курсора на кнопку «Экспорт» на панели инструментов осей открывается раскрывающееся меню с опциями для экспорта содержимого:

  • : Сохранение содержимого в виде строго обрезанного изображения или PDF.

  • : Копирование содержимого в виде изображения.

  • : Копирование содержимого в виде векторной графики.

См. также

Представлен в R2020a