Как я могу поместить изображение на кнопку Matlab uicontrol? - PullRequest
1 голос
/ 21 сентября 2019

У меня есть Matlab 2019b, GUI Layout Toolbox 2.3.4 и т. Д., Все они работают на MacOs 14 Mojave.

Я хочу создать кнопку в пользовательском интерфейсе с иконками / изображениями вместо текста.Я видел здесь:

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

Поэтому я достаточно уверен, что основной синтаксис и путь к файлу верны, но изображениене отображается в кнопке.

Есть ли что-то еще, что мне нужно сделать, чтобы сделать эту работу, или это всего лишь часть подавляющей странности Матлаба?

1 Ответ

1 голос
/ 22 сентября 2019

Самый простой способ поместить изображение в 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);
...