Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

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 函数来运行该 App。当您点击复制图按钮时,坐标区内容将复制到剪贴板。系统不会复制坐标区周围的区域,包括按钮。

copyapp

输入参数

全部折叠

图形对象,指定为以下对象之一:

  • 任何类型的坐标区:AxesPolarAxesGeographicAxes 对象。

  • 使用 figureuifigure 函数创建的图窗。

  • 独立可视化,如 heatmap 图。

  • 使用 tiledlayout 函数创建的分块图布局。

  • 图窗中的容器:PanelTabButtonGroup 对象。

捕获区域

copygraphics 捕获您指定的对象的内容。它不捕获 UI 组件,如按钮或滑块。

它也不捕获相邻的容器或子容器。例如,假设有一个包含线图的图窗以及一个包含热图的相邻面板:

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]

  • 十六进制颜色代码是字符向量或字符串标量,以井号 (#) 开头,后跟三个或六个十六进制数字,范围可以是 0F。这些值不区分大小写。因此,颜色代码 '#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'

以下是 MATLAB 在许多类型的绘图中使用的默认颜色的 RGB 三元组和十六进制颜色代码。

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' - 复制真彩色 RGB 内容。

  • 'gray' - 将内容转换为灰度。

局限性

MATLAB Online™MATLAB Web App Server™ 上托管的 Web App 不支持 copygraphics 函数。

替代功能

将鼠标悬停在坐标区工具栏中的导出按钮 上会显示下拉菜单,其中包含用于导出内容的选项:

  • :将内容保存为一个精确裁剪的图像或 PDF。

  • :将内容复制为图像。

  • :将内容复制为向量图。

另请参阅

在 R2020a 中推出