2013-02-04 16 views
6

Zrobiłem GUI za pomocą GUIDE. Mam osie (tag = axes1). Obraz jest wyświetlany w osiach. Po kliknięciu obrazu (osie wewnętrzne) potrzebuję uzyskać współrzędne. Otrzymuję wartości współrzędnych, gdy obraz nie jest dodawany do osi. Ale obraz wyświetlany w osiach nie powoduje uzyskania osi. Jak uzyskać współrzędne?MATLAB, jak uzyskać współrzędne kliknięcia myszą

Odpowiedz

2

Można uzyskać osie uchwyt z rączką obrazu przez

ah = get(imageHandle, 'Parent'); 

Następnie można uzyskać pozycję kliknięciem myszki przez

p = get(ah, 'CurrentPoint'); 
21

Załóżmy, że masz wykreślono obraz z uchwytem imageHandle to:

imageHandle = imshow(imageObj); 

Powinieneś przypisać ButtonDownFcn do t on obraz obsługiwać nie osie poradzić:

set(imageHandle,'ButtonDownFcn',@ImageClickCallback); 

i uzyskać współrzędne myszy z tej funkcji w następujący sposób:

function ImageClickCallback (objectHandle , eventData) 
    axesHandle = get(objectHandle,'Parent'); 
    coordinates = get(axesHandle,'CurrentPoint'); 
    coordinates = coordinates(1,1:2); 
    %// then here you can use coordinates as you want ... 
end 

Można spróbować ten mały demo sprawdzić moją odpowiedź:

function demoOnImageClick 
clc;clear; 
imObj = rand(500,500); 
figure; 
hAxes = axes(); 
imageHandle = imshow(imObj); 
set(imageHandle,'ButtonDownFcn',@ImageClickCallback); 

function ImageClickCallback (objectHandle , eventData) 
axesHandle = get(objectHandle,'Parent'); 
coordinates = get(axesHandle,'CurrentPoint'); 
coordinates = coordinates(1,1:2); 
message  = sprintf('x: %.1f , y: %.1f',coordinates (1) ,coordinates (2)); 
helpdlg(message); 
end 

end 
+0

Dziękuję. To zadziałało. – HelloASP

+2

@HelloASP, możesz zaakceptować odpowiedź, jeśli spełnia twoje wymagania dotyczące pytania, aby zakończyć dyskusję w tym pytaniu. –

+0

@HelloASP proszę sprawdzić odpowiedzi Sameh jako prawidłowe. thnx:] –

Powiązane problemy