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)