如何更改 MATLAB 图工具栏上的按钮图标? (2014b)
How to change the button icons on the MATLAB figure toolbar? (2014b)
我正在用 MATLAB 编写一个应用程序,想更新它的外观。是否可以在 MATLAB 代码中更改工具栏中按钮的图标?
代码将被编译,我没有使用 GUIDE;理想情况下,有一种方法可以获取按钮句柄并单独设置每个图标,尽管我不知道该怎么做。
但图标质量更高。
是的,您可以更改图形工具栏图标,或添加您自己的图标。
我在下面详细说明了如何更改图标,以及在编辑属性时使用工具栏进行的其他有用操作。
详情见代码注释。
获取工具栏对象
% Initialise some figure
fig = figure( 'Name', 'MyApp', 'NumberTitle', 'off' )
% Get the figure toolbar handle
tbar = findall( fig, 'tag', 'FigureToolBar' );
此时您可以findall(tbar)
列出所有按钮的名称
隐藏按钮
假设您想隐藏 "new figure" 按钮:
% Get the button from the tbar object
btn = findall( tbar, 'tag', 'Standard.NewFigure' )
% Set to not visible
set( btn, 'Visible', 'off' );
更改回调
假设您希望打印按钮触发打印预览回调而不是直接打印(您可以将任何自定义回调函数分配给任何按钮):
% Get the button again
btn = findall( tbar, 'tag', 'Standard.PrintFigure' );
% Change the callback (and the tooltip to match)
set( btn, 'ClickedCallback', 'printpreview(gcbf)', ...
'TooltipString', 'Print preview' );
更改图标
此时您可以看到所有按钮属性都是可编辑的,包括您最初问题中的图像。
特别是,只需将 CData
属性:
% Update the print button to have a print preview icon
% This should be a 16*16 RBG image matrix, use imread to get from file
img = imread( 'printpreview.bmp' )
% Assign CData property to button already acquired
set( btn, 'CData', img );
输出(我使用了一个随机的打印预览图标,左起第四个):
添加新按钮
您可以通过简单地创建 uipushtool
对象(为图标图像设置 CData 属性)并以 tbar
对象作为父对象来添加新按钮。
更改分隔符
可以添加或删除垂直灰色分隔符(对于创建您自己的按钮组或删除按钮时很有用)。只需将 'Separator'
属性 设置为 'off'
或 'on'
,作为按钮左侧的分隔符。
对于已编译的应用程序,这可能违反了 The MathWorks 的条款和条件,但这是如何而不是你应该这样做!
我正在用 MATLAB 编写一个应用程序,想更新它的外观。是否可以在 MATLAB 代码中更改工具栏中按钮的图标?
代码将被编译,我没有使用 GUIDE;理想情况下,有一种方法可以获取按钮句柄并单独设置每个图标,尽管我不知道该怎么做。
但图标质量更高。
是的,您可以更改图形工具栏图标,或添加您自己的图标。
我在下面详细说明了如何更改图标,以及在编辑属性时使用工具栏进行的其他有用操作。
详情见代码注释。
获取工具栏对象
% Initialise some figure
fig = figure( 'Name', 'MyApp', 'NumberTitle', 'off' )
% Get the figure toolbar handle
tbar = findall( fig, 'tag', 'FigureToolBar' );
此时您可以findall(tbar)
列出所有按钮的名称
隐藏按钮
假设您想隐藏 "new figure" 按钮:
% Get the button from the tbar object
btn = findall( tbar, 'tag', 'Standard.NewFigure' )
% Set to not visible
set( btn, 'Visible', 'off' );
更改回调
假设您希望打印按钮触发打印预览回调而不是直接打印(您可以将任何自定义回调函数分配给任何按钮):
% Get the button again
btn = findall( tbar, 'tag', 'Standard.PrintFigure' );
% Change the callback (and the tooltip to match)
set( btn, 'ClickedCallback', 'printpreview(gcbf)', ...
'TooltipString', 'Print preview' );
更改图标
此时您可以看到所有按钮属性都是可编辑的,包括您最初问题中的图像。
特别是,只需将 CData
属性:
% Update the print button to have a print preview icon
% This should be a 16*16 RBG image matrix, use imread to get from file
img = imread( 'printpreview.bmp' )
% Assign CData property to button already acquired
set( btn, 'CData', img );
输出(我使用了一个随机的打印预览图标,左起第四个):
添加新按钮
您可以通过简单地创建 uipushtool
对象(为图标图像设置 CData 属性)并以 tbar
对象作为父对象来添加新按钮。
更改分隔符
可以添加或删除垂直灰色分隔符(对于创建您自己的按钮组或删除按钮时很有用)。只需将 'Separator'
属性 设置为 'off'
或 'on'
,作为按钮左侧的分隔符。
对于已编译的应用程序,这可能违反了 The MathWorks 的条款和条件,但这是如何而不是你应该这样做!