首页 > 解决方案 > 如何将图像放在 Matlab uicontrol 按钮上?

问题描述

我有 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 压倒性陌生感的一部分?

标签: htmlmatlabiconsuicontrolmatlab-gui

解决方案


将图像放在 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);

推荐阅读