我有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);
但是它给我留下了一个空的按钮。
如果我故意使用与现有文件不匹配的文件名,则会看到损坏的图像图标:
因此,我可以合理地确定基本语法和文件路径的内容是正确的,但是图像不会在按钮中呈现。
要完成这项工作,我还需要做其他事情吗?还是Matlab压倒性的陌生性的一部分?
答案 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);