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ą
6
A
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
Dziękuję. To zadziałało. – HelloASP
@HelloASP, możesz zaakceptować odpowiedź, jeśli spełnia twoje wymagania dotyczące pytania, aby zakończyć dyskusję w tym pytaniu. –
@HelloASP proszę sprawdzić odpowiedzi Sameh jako prawidłowe. thnx:] –