copygraphics
将绘图或图形内容复制到剪贴板
说明
copygraphics( 将 obj)obj 指定的图形对象的内容复制到系统剪贴板。图形对象可以是任何类型的坐标区、图窗、独立可视化、分块图布局或图窗内的容器。剪贴板内容可用于粘贴到其他应用程序和文档中。
copygraphics( 指定用于将内容复制到剪贴板的其他选项。例如,obj,Name,Value)copygraphics(gca,Resolution=300) 将当前坐标区的内容作为 300-DPI 图像复制到剪贴板。
示例
显示一个图像并获取当前坐标区。然后将该坐标区的内容复制为 300-DPI 图像。
I = imread('peppers.png'); imshow(I) ax = gca; copygraphics(ax,'Resolution',300)

自 R2025a 起
要指定复制内容的宽度和高度,请创建一个具有相似大小和纵横比的图窗。例如,在大小为 500×400 像素的图窗中创建一个针状图。然后将坐标区复制为 500×400 像素大小的图像,包含在每条边上填充的 10 个像素。
f = figure; f.Position(3:4) = [500 400]; stem(1:10,"filled",LineWidth=2) ylim padded ax = gca; copygraphics(ax,Units="pixels",Width=500,Height=400, ... ContentType="image",Padding=10)

显示一个具有超出坐标区边界的注解的绘图。然后复制图窗中的内容。
plot(1:10) annotation('textarrow',[0.06 0.5],[0.73 0.5],'String','y = x ') f = gcf; copygraphics(f)

显示一个条形图并获取当前坐标区。然后将坐标区的内容复制为向量图。
bar([10 22 31 43]) ax = gca; copygraphics(ax,'ContentType','vector')

在分块图布局中显示两个绘图。然后通过将 TiledChartLayout 对象传递给 copygraphics 函数,将这两个绘图复制到剪贴板。
t = tiledlayout(2,1); nexttile plot([1 2 3]) nexttile plot([3 2 1]) copygraphics(t)

如果您只想复制其中一个绘图,请在调用 nexttile 函数时包含坐标区返回参量。然后将坐标区传递给 copygraphics 函数。
显示一个热图。然后将该图复制为向量图,并指定透明背景。
h = heatmap(rand(10,10)); copygraphics(h,'ContentType','vector','BackgroundColor','none')

创建一个名为 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

输入参数
名称-值参数
以 Name1=Value1,...,NameN=ValueN 的形式指定可选参量对组,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。
示例: copygraphics(gca,Resolution=300) 将当前坐标区的内容复制为 300-DPI 图像。
要复制的内容的类型,指定为以下选项之一:
"auto"- MATLAB 控制内容是向量图还是图像。"vector"- 将内容复制为可缩放到任何大小的向量图。"image"- 将内容复制为光栅化图像。
注意
如果指定 "vector" 选项,某些可视化效果可能会包含杂散线条或其他伪影。
分辨率,单位为每英寸点数 (DPI),指定为大于或等于 1 的整数。
当 ContentType 是 "vector" 时,指定分辨率不起作用。
数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
背景颜色,指定为 "current"、"none"、RGB 三元组、十六进制颜色代码或颜色名称。背景颜色控制坐标区或图周围边距的颜色。
值
"current"根据父容器的颜色设置背景颜色。如果通过设置属性显式设置父容器的颜色(例如使用figure(Color="red")创建红色图窗),则复制的图形将使用该颜色。如果未设置父容器的颜色,则复制的图形的背景颜色取决于主题。浅色主题下背景为白色。深色主题下背景为深灰(接近黑色)。 (自 R2025a 起)
"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" |
|
下表列出了浅色和深色主题中绘图的默认调色板。
| 调色板 | 调色板颜色 |
|---|---|
在 R2025a 之前的版本中: 大多数绘图默认使用这些颜色。 |
|
|
|
您可以使用 orderedcolors 和 rgb2hex 函数获取这些调色板的 RGB 三元组和十六进制颜色代码。例如,获取 "gem" 调色板的 RGB 三元组并将其转换为十六进制颜色代码。
RGB = orderedcolors("gem");
H = rgb2hex(RGB);在 R2023b 之前的版本中: 使用 RGB = get(groot,"FactoryAxesColorOrder") 获取 RGB 三元组。
在 R2024a 之前的版本中: 使用 H = compose("#%02X%02X%02X",round(RGB*255)) 获取十六进制颜色代码。
复制图形的颜色空间,指定为 "rgb" 或 "gray"。
"rgb"- 复制真彩色 RGB 内容。"gray"- 将内容转换为灰度。
自 R2025a 起
复制的图形的宽度,指定为 "auto" 或正数。要指定自定义宽度,请指定数字。默认情况下,图像的单位是像素,向量图形的单位是磅。您可以使用 Units 名称-值参量来指定不同单位。所有宽度值都包括图形周围的任何填充。默认情况下,复制的图形包含很窄的填充边距,但您可以通过指定 Padding 名称-值参量来更改它。
当 Width 值为 "auto" 时,会根据 Height 值选择保持纵横比的宽度。
注意
如果将
Width指定为数字,则还必须将ContentType指定为"image"或"vector"。如果将内容复制为像素,则默认
Width("auto") 取决于Resolution名称-值参量,默认情况下为150。要使用默认宽度并更好地匹配屏幕上的显示大小,请将Resolution名称-值参量指定为get(groot,"ScreenPixelsPerInch")返回的值。例如:sppi = get(groot,"ScreenPixelsPerInch"); copygraphics(gca,Resolution=sppi)
自 R2025a 起
复制的图形的高度,指定为 "auto" 或正数。要指定自定义高度,请指定数字。默认情况下,图像的单位是像素,向量图形的单位是磅。您可以使用 Units 名称-值参量来指定不同单位。所有高度值都包括图形周围的任何填充。默认情况下,复制的图形包含很窄的填充边距,但您可以通过指定 Padding 名称-值参量来更改它。
当 Height 值为 "auto" 时,会根据 Width 值选择保持纵横比的高度。
注意
如果将
Height指定为数字,则还必须将ContentType指定为"image"或"vector"。如果将内容复制为像素,则默认
Height("auto") 取决于Resolution名称-值参量,默认情况下为150。要使用默认高度并更好地匹配屏幕上的显示大小,请将Resolution名称-值参量指定为get(groot,"ScreenPixelsPerInch")返回的值。例如:sppi = get(groot,"ScreenPixelsPerInch"); copygraphics(gca,Resolution=sppi)
自 R2025a 起
复制的图形周围的填充,指定为下表中的值之一。
| 值 | 描述 | 示例 |
|---|---|---|
| 包括足够的填充以包含 x 和 y 轴标签、标题和装饰元素,如图例和颜色栏。 | 创建一个条形图,并将其复制为具有 图像周围的灰色边框勾勒出捕获区域的轮廓。边框不是复制图像的一部分。
bar(1:5)
title("My Bar Chart")
ax = gca;
copygraphics(ax)
|
| 包括与图窗窗口中所示相同的相对填充量。 | 创建一个条形图,并将其复制为具有 图像周围的灰色边框勾勒出捕获区域的轮廓。
bar(1:5) title("My Bar Chart") ax = gca; copygraphics(ax,Padding="figure")
|
正数 | 包括指定的填充量。如果为 | 创建一个条形图,并将其复制为填充 100 像素的图像。 图像周围的灰色边框勾勒出捕获区域的轮廓。
bar(1:5) title("My Bar Chart") ax = gca; copygraphics(ax,ContentType="image",Padding=100)
|
自 R2025a 起
Width、Height 和 Padding 值的单位,指定为 "auto"、"pixels"(仅适用于图像)、"inches"、"centimeters" 或 "points"(其中 1 磅 = 1/72 英寸)。
默认值 "auto" 将图像的单位设置为 "pixels",而将向量图形的单位设置为 "points"。
注意
如果指定 Width、Height 或 Padding 的值,则还必须将 ContentType 指定为 "image" 或 "vector"。
自 R2025a 起
保留原始纵横比,指定为 "auto"、"on" 或 "off"。
值 "auto" 使 copygraphics 能够选择 "on" 或 "off",具体取决于您是否指定 Width 和 Height 名称-值参量以及组合是否会更改纵横比。如果您指定 Width 或 Height 名称-值参量(但不是同时指定两者),则 copygraphics 会保留原始纵横比。如果您为两个维度都指定了值,并且这些值会更改纵横比,则该函数不会保留原始纵横比。
下表总结了 "on" 和 "off" 值的行为。
| 值 | 描述 | 示例 |
|---|---|---|
| 保留原始图形的纵横比。
| 创建一个条形图。然后将图复制为图像。仅指定 图像周围的灰色边框勾勒出捕获区域的轮廓。边框不是复制图像的一部分。
bar(1:5) ax = gca; copygraphics(ax,Width=250,ContentType="image", ... PreserveAspectRatio="on")
将图复制为具有
copygraphics(ax,Width=250,ContentType="image", ... Height=350,PreserveAspectRatio="on")
|
| 不保留原始纵横比。如果 | 创建一个条形图。然后将该图复制为具有 该图像显示图的拉伸版本。图像周围的灰色边框勾勒出捕获区域的轮廓。
bar(1:5) ax = gca; copygraphics(ax,Width=250,Height=350, ... ContentType="image",PreserveAspectRatio="off")
|
限制
MATLAB Web App Server™ 不支持
copygraphics。MATLAB Online™ 仅支持复制图像(像素)。不支持向量图。 (自 R2024b 起)
替代功能
使用图窗工具条 (自 R2025a 起)
在图窗选项卡中,点击复制图窗。有关详细信息,请参阅将图窗复制到剪贴板。
使用坐标区工具栏
将鼠标置于坐标区工具栏中的导出按钮
上以显示下拉菜单,其中包含用于导出内容的选项:
:将内容保存为一个精确裁剪的图像或 PDF。
:将内容复制为图像。
:将内容复制为向量图。
版本历史记录
在 R2020a 中推出使用以下名称-值参量指定宽度、高度、填充以及是否保留原始图形的纵横比:
Width和Height- 指定输出的宽度和高度。Padding- 指定图形周围的填充量。Units- 指定宽度、高度和填充值的单位。PreserveAspectRatio- 指定如果Width和Height值与图形的原始纵横比发生冲突,是否自动添加填充以保留原始纵横比。
如果将容器(如图窗或面板)传递给 copygraphics 函数,且该容器有子容器,则某些情况下该函数会返回错误:
存在多个子容器,且至少一个子容器包含坐标区对象或独立可视化对象
父容器的子级为坐标区对象(或独立可视化对象),且这些子级在图形层次结构中与同级容器相邻
要捕获子容器的内容,请将该容器传递给 copygraphics 函数。要捕获图窗的全部内容,请使用 exportapp 函数。
在 MATLAB Online 中使用 copygraphics 函数将图像复制到剪贴板。以前,您只能在 MATLAB 的本地安装版本中使用 copygraphics 函数。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
















