2016-03-24 17 views
1

kullanıcı yakınlaştırma yaptığı olmadığını görmek veya matlab bir figür üzerinde uzaklaştırmak ben kod çalıştırmasına ve kaydırma Fare kullanmayı eğerMatlab'ın Yakınlaştırma araçlarını kullandığımda, fare kaydırması kullanıp kullanmadığımı nasıl belirlediğimi? Bu kodu geliştirdi Ben

bilgilerin doğruluğunu
function demo3 

MainFig = figure; 
x = sin(theta) + 0.75*rand(1,300); 
y = cos(theta) + 0.75*rand(1,300); 
a = 40; 
hs=scatter(x,y,a,'MarkerEdgeColor',[0 .5 .5],... 
'MarkerFaceColor',[0 .7 .7],... 
'LineWidth',1.5);   
h = zoom; 

set(MainFig, 'WindowScrollWheelFcn', @figure1_WindowScrollWheelFcn); 
set(h, 'ActionPostCallback', @mypostcallback); 

function mypostcallback(h, eventdata) 
disp('INFO: Direction') 
h2 = zoom; 
get(h2,'Direction') 

function figure1_WindowScrollWheelFcn(hObject, eventdata, handles) 
if eventdata.VerticalScrollCount > 0 
    disp ('Scrool Up ') 
else 
    disp ('Scrool Down ') 
end 

sorun olup olmadığını saptamaya için yukarı veya aşağı kaydırırım. Ama bilgilerinde zoom Zoom araçları ve basın kullanırsanız nispeten yönüne doğru ama yukarı ve bilgi aşağı fare kaydırma kullanırsanız aynı:

BİLGİ: Yön

ans =

yılında

Ben bir zoom yapmak veya Yakınlaştırma aracıyla veya scrool fare ile ya uzaklaştırma eğer algılayan bir kod gerekir.

cevap

1

yerine bu deneyin:

set(h, 'ActionPostCallback', @mypostcallback); 
set(h, 'ActionPreCallback', @myprecallback); 

function myprecallback(h, eventdata) 
set(h, 'UserData', {eventdata.Axes.XLim, eventdata.Axes.YLim}) 

function mypostcallback(h, eventdata) 
old_lims = get(h, 'UserData'); 
old_d = cellfun(@diff, old_lims); 
new_d = [diff(eventdata.Axes.XLim), diff(eventdata.Axes.YLim)]; 
disp('INFO: Direction') 
if all(old_d == new_d) 
    disp('No change'); 
elseif all(old_d-new_d <= 0) 
    disp('Out') 
elseif all(old_d-new_d >= 0) 
    disp('In') 
else 
    disp('oops, did not expect this!') 
end 

Bu sadece zoom önce axes sınırlarını kaydeder ve zoom sonra sınırlar ile karşılaştırır. Daha büyüklerse, küçültüyorlarsa, yakınlaştırdık. Yakınlaştırdık.

+0

Çalışıyor. Teşekkürler –

İlgili konular