matlab 代码画button,点击后变名字

来源:互联网 发布:桌面壁纸设计软件在线 编辑:程序博客网 时间:2024/04/26 11:20

function initButton(hParent, position, label, callback)
       name = genvarname(label);
       label = strrep(label, ' ', char(10));
       hAxes = axes('Parent',hParent, 'Units','norm', 'Position',position, 'Color',[.3,.3,1], ...
                    'Box','off', 'Xtick',[], 'YTick',[], 'YColor','w', 'XColor','w');
       hText = text(0.5, 0.5, label, 'Parent',hAxes, 'tag',['tx' name], 'Color','k', ...
                    'Horizontal','center', 'FontName','Helvetica', 'FontSize',12, 'Fontweight','bold');
       set([hAxes,hText], 'ButtonDownFcn',{callback,hAxes,hText});
       GUI.(['ax' name]) = hAxes;
       GUI.(['tx' name]) = hText;

       % Create rounded button corners
       N=200; a=2*pi*(0:N)/N;  % number of vertix points
       sa=sin(a);
       ca=cos(a);  ca=0.2*ca+0.7*sign(ca);
       vert = [ca,1.2,1.2,-1.2,-1.2,1.2,1.2; sa,0,-1.2,-1.2,1.2,1.2,0]';
       vert = 0.5 + 0.5*vert;
       p = patch('Parent',hAxes, 'Vertices',vert, 'Faces',1:size(vert,1), 'FaceColor','w', 'EdgeColor','none');
       try set(p, 'LineSmooth','on'); catch, end  % HG1 only
       set(hAxes,'XLim',[0,1],'YLim',[0,1]);
       set(GUI.hFig,'Renderer','painters');  % patch changes to OpenGL which hides the axData labels
   end  % initButton

 

调用

initButton(hLeftBottomPanel, [.70,.01,.3,.18], 'Start trading',   @toggleTrading);

 

回调函数为:

function toggleTrading(hObject,eventData,hAxes,hText) %#ok<INUSL>
        GUI.trading = ~GUI.trading;
        if GUI.trading
            set(hText,'String',['Pause' 10 'trading']);
            set(hAxes,'Color','r');
        else
            set(hText,'String',['Resume' 10 'trading']);
            set(hAxes,'Color','g');
        end
    end  % toggleTrading

0 0