2013-02-04 25 views
6

Tôi đã tạo GUI bằng GUIDE. Tôi có một trục (tag = axes1). Một hình ảnh được hiển thị trong các trục. Khi tôi bấm vào hình ảnh (bên trong trục), tôi cần phải có được tọa độ. Tôi nhận được giá trị tọa độ khi hình ảnh không được thêm vào trục. Hình ảnh được hiển thị ở trục không có được trục. Làm thế nào để có được tọa độ?MATLAB cách nhận tọa độ nhấp chuột

Trả lời

2

Bạn có thể nhận các trục xử lý từ xử lý hình ảnh bằng cách

ah = get(imageHandle, 'Parent'); 

Sau đó, bạn có thể có được vị trí click chuột bằng

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

Giả sử rằng bạn đã vẽ hình ảnh với tay cầm imageHandle rằng:

imageHandle = imshow(imageObj); 

Bạn nên chỉ định ButtonDownFcn cho t anh hình ảnh xử lý không phải là trục xử lý rằng:

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

và nhận được chuột phối từ chức năng này như sau:

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 

Bạn có thể thử nhỏ bản demo này để kiểm tra câu trả lời của tôi:

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

Cảm ơn bạn. Nó đã hoạt động. – HelloASP

+2

@HelloASP, bạn có thể chấp nhận câu trả lời nếu đáp ứng các yêu cầu của bạn về câu hỏi để kết thúc cuộc thảo luận trong câu hỏi này. –

+0

@HelloASP hãy đảm bảo kiểm tra câu trả lời của Sameh là chính xác. thnx:] –