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