Octave 如何在八度音阶的按钮或面板上放置图像?

Octave 如何在八度音阶的按钮或面板上放置图像?,octave,Octave,我想把一个图像放在一个按钮或一个八度的面板上,尝试了很多方法,但都没有得到它。我想显示如下内容: 我尝试了这段代码,但得到的只是一个空白按钮: 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('s

我想把一个图像放在一个按钮或一个八度的面板上,尝试了很多方法,但都没有得到它。我想显示如下内容:

我尝试了这段代码,但得到的只是一个空白按钮:

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))

不确定这是您想要的,但您可以创建一个图像并直接为其分配回调函数。无需将其设置为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;
你看到这张照片了。单击“笑脸”查看发生了什么*:)



*显然,我的意思是当你在八度音阶下运行时,不是在这里

您好,您似乎是新来的,请按照格式提问,我们将从中帮助您。是的,@Rich谢谢此代码似乎不起作用(错误:数组属性“cdata”的值无效)。另外,我将替换为
img=zero([19,19,3])此处可使其直接复制/粘贴给试图提供帮助的用户。话虽如此,我仍然不清楚你想做什么(或者那张图片是要展示什么)。您是否正在尝试将图像放置在现有按钮的左侧和右侧?此外,您没有使用面板,而是使用“工具栏”。这是一个完全不同的东西(工具栏是菜单状的条带,显示在“文件、视图、编辑”菜单的正下方,可以容纳切换按钮等)。好的,我刚刚意识到您的代码来自octave的“uipushtool”文档示例。是的,您不能在uitoolbar上添加uicontrol。您只能添加兼容的项目。相反(与您更相关),您可能正试图在uipanel上添加一个uicontrol。