www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/@xregcolorbar/private/pr_setMotionRegions.m

    function pr_setMotionRegions(gr)
% Set mouse motion regions corresponding to limits

%  Copyright 2000-2016 The MathWorks, Inc. and Ford Global Technologies, Inc.



newpos = get(gr.cfactor,'UserData');

gr = builtin('get',gr.colorbar.axes,'userdata');
%Get the current motion managers

mnsz=minsize(gr);
if newpos(3)<mnsz(1) || newpos(4)<mnsz(2)
    % go to blackout mode
    gr.MouseMotion(4).UserEnabled = 'off';
else
    pos = get(gr.colorbar.axes,'Position');
    
    if ~get(gr.colorbar.userange,'Value')
        gr.MouseMotion(4).UserEnabled = 'off';
    else
        gr.MouseMotion(4).UserEnabled = 'on';
        
        ylim=get(gr.colorbar.axes,'YLim');
        clen=ylim(2)-ylim(1);
        act_delta = 2;
        barval=get(gr.colorbar.minrange,'UserData');
        ypos = floor((barval-ylim(1))/clen*pos(4) + pos(2) - 2*act_delta);
        gr.MouseMotion(1).Region = [pos(1) ypos pos(3) 4*act_delta];
        
        barval=get(gr.colorbar.midrange,'UserData');
        ypos = floor((barval-ylim(1))/clen*pos(4) + pos(2) - 2*act_delta);
        gr.MouseMotion(2).Region = [pos(1) ypos pos(3) 4*act_delta];
        
        barval=get(gr.colorbar.maxrange,'UserData');
        ypos = floor((barval-ylim(1))/clen*pos(4) + pos(2) - 2*act_delta);
        gr.MouseMotion(3).Region = [pos(1) ypos pos(3) 4*act_delta];
    end
end

builtin('set',gr.colorbar.axes,'userdata',gr);