如何更改MATLAB图形工具栏上的按钮图标?(2014B)

J. *_*ick 4 matlab user-interface matlab-figure

我正在MATLAB中编写一个应用程序,并希望更新它的外观.是否可以在MATLAB代码中更改工具栏中按钮的图标?

代码将被编译,我不使用GUIDE; 理想情况下,有一种方法可以获得按钮手柄并单独设置每个图标,虽然我不知道如何做到这一点.

我的意思的例子

但是有更高质量的图标.

Wol*_*fie 6

是的,您可以更改图形工具栏图标,也可以添加自己的图标.

我已经详细介绍了如何更改下面的图标,以及在编辑属性时对工具栏进行的其他有用的操作.

有关详细信息,请参阅代码注释

获取工具栏对象

% Initialise some figure 
fig = figure( 'Name', 'MyApp', 'NumberTitle', 'off' )
% Get the figure toolbar handle
tbar = findall( fig, 'tag', 'FigureToolBar' );
Run Code Online (Sandbox Code Playgroud)

此时您可以findall(tbar)列出所有按钮的名称

隐藏按钮

假设您要隐藏"新图"按钮:

% Get the button from the tbar object
btn = findall( tbar, 'tag', 'Standard.NewFigure' )
% Set to not visible
set( btn, 'Visible', 'off' );
Run Code Online (Sandbox Code Playgroud)

改变回调

假设您希望打印按钮触发打印预览回调而不是直接打印(您可以将任何自定义回调函数分配给任何按钮):

% 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' );
Run Code Online (Sandbox Code Playgroud)

更改图标

此时,您可以看到所有按钮属性都是可编辑的,包括原始问题的图像.

特别是,只需更改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 );
Run Code Online (Sandbox Code Playgroud)

输出(我使用随机打印预览图标,从左边第4位看):

数字

添加新按钮

您可以通过简单地创建uipushtool对象(具有为图标图像设置的CData属性)并将tbar对象作为父对象来添加新按钮.

更改分隔符

可以添加或删除垂直灰色分隔符(对于创建自己的按钮组或删除按钮很有用).只需将'Separator'属性设置为'off''on',对于按钮左侧的分隔符.


对于编译应用程序,这可能是对The MathWorks公司的条款和条件,但是这是怎么不是你应该这样做!