如何将图像放在 Matlab uicontrol 按钮上?
How can I put an image on a Matlab uicontrol button?
我有 Matlab 2019b、GUI Layout Toolbox 2.3.4,并且都在 MacOs 14 Mojave 上运行。
我想在具有 icons/images 而不是文本的 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 压倒性陌生感的一部分?
将图像放在 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);
我有 Matlab 2019b、GUI Layout Toolbox 2.3.4,并且都在 MacOs 14 Mojave 上运行。
我想在具有 icons/images 而不是文本的 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 压倒性陌生感的一部分?
将图像放在 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);