如何将图像放在Matlab uicontrol按钮上?

时间:2019-09-21 15:13:19

标签: html matlab icons uicontrol matlab-gui

我有Matlab 2019b,GUI Layout Toolbox 2.3.4,并且都可以在MacOs 14 Mojave上运行。

我想在具有图标/图像而不是文本的UI中创建按钮。我在这里看到了:

https://undocumentedmatlab.com/blog/html-support-in-matlab-uicomponents/

应该可以使用HTML来呈现按钮内容。

所以-我尝试以下示例代码:

figure('MenuBar','none','Name','GUI-TEST','NumberTitle','off','Position',[200,200,140,90]);
push_btn = uicontrol('Style','PushButton','String','Push','Position',[30,60,80,20],...
  'CallBack','disp(''You are pressed a push button'')');
close_btn = uicontrol('Style','PushButton','String','Close','Position',[30,5,80,50],...
    'CallBack','close');
icon_file = fullfile(pwd, 'close.png')
str = ['<html><img src="file://' icon_file '"></html>']
set(close_btn,'String',str);

但是它给我留下了一个空的按钮。

enter image description here

如果我故意使用与现有文件不匹配的文件名,则会看到损坏的图像图标:

enter image description here

因此,我可以合理地确定基本语法和文件路径的内容是正确的,但是图像不会在按钮中呈现。

要完成这项工作,我还需要做其他事情吗?还是Matlab压倒性的陌生性的一部分?

1 个答案:

答案 0 :(得分:1)

将图像放在uicontrol(特别是按钮)上的最简单方法是使用CData属性,

im_orig = imread(icon_file);  % Needs to be true color, i.e. MxNx3
im_sized = imresize(im_orig,[80,50]); % size of the button
% str = ['<html><img src="file://' icon_file '"></html>'];
% set(close_btn,'String',str);
set(close_btn,'CData',im_sized);