Как разместить изображение над кнопкой или панелью в октаве? - PullRequest
0 голосов
/ 17 октября 2019

Я хочу поместить изображение поверх кнопки или панели в октаве, перепробовал много способов, но не смог получить его. Я хочу отобразить что-то вроде этого:

image

Я попробовал этот кусок кода, но все, что я получаю, это пустая кнопка:

f = figure ("toolbar", "none");
% create empty toolbar
t = uitoolbar (f);
% create a 19x19x3 black square
img=imread('12.jpg');
% add pushtool button to toolbar
b = uicontrol('style','pushbutton',...
            'units','pixels',...
            'position',[10, 20, 10, 20],...
            'cdata', uint64(img))

1 Ответ

0 голосов
/ 17 октября 2019

Не уверен, что это то, что вам нужно, но вы можете создать изображение и назначить ему функцию обратного вызова напрямую. Не нужно делать это кнопкой uicontrol. Вы можете сделать это независимо от того, является ли изображение само по себе или встроено в uipanel и т. Д. Например,

Fig = figure(1);
MyPanel = uipanel( 'units'   , 'normalized', 
                   'position', [0.2, 0.2, 0.6, 0.6], 
                   'title'   , 'My Panel' );

% Draw smiley
Sm = cat(3, ones(11,11), ones(11,11), zeros(11,11) ); % Draw background
Sm(3, 3, 3) = 1; Sm(3, 9, 3) = 1; Sm(9, 3:9, 3) = 1;  % Draw face

Ax = axes( MyPanel, 'units', 'normalized', 'position', [0.2, 0.2, 0.6, 0.6] );

function Im_callback( Handl, Evnt )
  set( Handl, 'cdata', double( ~get( Handl, 'cdata' ) ) );
end

Im = imagesc( Ax, Sm, 'buttondownfcn', @Im_callback );
axis off;

Вы получаете эту картинку. Нажмите на «смайлик», чтобы увидеть, что происходит *:)

enter image description here


*, очевидно, я имею в виду, когда вы запускаете этов октаве, а не здесь!

...