2016-04-09 56 views
0

Mandelbrot setinin bölgelerine bir düğmeye basarak zoom yapmaya çalışıyorum. GUIDE kullanıyorum ve bu nedenle ButtonDownFcn eksenlerini kullanmak istiyorum. Görüntüyü, x & y koordinatlarını ve rengini içeren imag adlı bir dizi içinde saklarım. Matlab ButtonDownFcn görüntülü çalışmıyor

fonksiyon

aşağıdaki komutları kullanarak görüntüyü zaman ancak artık erişilebilir, komplo önce çağrılabilir: çağrıldığında

axes(handles.DrawAxes); 
cla 

imagesc(imag,'HitTest','Off'); 

cevap

0

As explained here , high-level grafik fonksiyonlar aslında eksenler özelliklerini temizleyin. Yani (NextPlot özelliğini etkiler) hold işlevini kullanın ya da sadeceimage/imagesc/imshow denir sonra eksenin ButtonDownFcn geri arama ayarlayın. Eğer resmi güncelleştirmek gerekir CData özelliğini yerine imajını yeniden planlamakla güncellemek için görüntü kolu kullanırsanız Daha sonra

% create axes 
ax = axes(); 

% display image 
img = imread('cameraman.tif'); 
imagesc(img, 'Parent',ax, 'PickableParts','none', 'HitTest','off'); 
axis(ax, 'image') 
colormap gray 

% set click callback 
ax.ButtonDownFcn = @(o,e) disp('axis clicked'); 

: Burada

bir örnektir.

+0

Not: Yukarıdaki örnek, R2014b'de tanıtılan HG2 grafik sistemi için yazılmıştır. Eski sürümleri için değiştirmek kolay olmalı .. – Amro

+0

Şimdi aşağıdakileri kullanarak çalışmak için buttondownfnc alabilirsiniz: axes_handle = handles.DrawAxes; imagesc (imag, 'HitTest', 'Off'); set (axes_handle, 'ButtonDownFcn', {@ FcnName, a, b}); Ancak, konumumu nasıl tıklayacağımı veya GUI'm için tutamaçlara nasıl erişebileceğimi bilmiyorum. –

+0

bunlar ayrı sorulardır, yeni bir soru oluşturmalı ve bu bölümü sormalısınız .. Ama başlaman için, fare konumunu almak için kullanılan bir 'CurrentPoint' özelliği var. Kulplara gelince, 'findobj' kullanabilir ya da tutamakları 'guidata' ya da getappdata' kullanarak UI’de saklayabilirsiniz. – Amro