Я знаю, что этот вопрос задан раньше, но я не могу найти никаких хороших ответов. Я продолжаю спотыкаться о WindowButtonMotionFcn
, но я действительно не понимаю, как его использовать. В моей программе я хочу иметь возможность щелкнуть и сохранить координаты ТОЛЬКО, когда пользователь находится над определенными осями, так что нормальная мышь появится для остальной части графического интерфейса, и они могут играть с другими кнопками. Спасибо за понимание.Как определить, находится ли мышь над осями, используя MATLAB GUIDE
0
A
ответ
1
Я бы рекомендовал не использовать WindowButtonMotionFcn
и вместо этого использовать ButtonDownFcn
вашего объекта осей. Таким образом, MATLAB позаботится о вашем обнаружении ударов.
Например:
function testcode()
h.myfig = figure;
h.myaxes = axes(...
'Parent', h.myfig, ...
'Units', 'Normalized', ...
'Position', [0.5 0.1 0.4 0.8], ...
'ButtonDownFcn', @myclick ...
);
end
function myclick(~, eventdata)
fprintf('X: %f Y: %f Z: %f\n', eventdata.IntersectionPoint);
% Insert data capture & storage here
end
печатает координаты каждый раз, когда вы щелкаете внутри осей, но ничего не делает, когда вы щелкаете где-нибудь еще.
EDIT:
Поскольку это GUIDE GUI самый простой подход заключается в использовании getappdata
для передачи данных по GUI. Для начала, вам нужно изменить ваш GUI_OpeningFcn
к чему-то вроде следующего:
function testgui_OpeningFcn(hObject, eventdata, handles, varargin)
% Choose default command line output for testgui
handles.output = hObject;
% Initialize axes click behavior and data storage
set(handles.axes1, 'ButtonDownFcn', {@clickdisplay, handles}); % Set the axes click handling to the clickdisplay function and pass the handles
mydata.clickcoordinates = []; % Initialize data array
setappdata(handles.figure1, 'mydata', mydata); % Save data array to main figure
% Update handles structure
guidata(hObject, handles);
А затем добавить функцию обработки щелчка в другом месте в вашем GUI:
function clickdisplay(~, eventdata, handles)
mydata = getappdata(handles.figure1, 'mydata'); % Pull data from main figure
mydata.clickcoordinates = vertcat(mydata.clickcoordinates, eventdata.IntersectionPoint); % Add coordinates onto the end of existing array
setappdata(handles.figure1, 'mydata', mydata); % Save data back to main figure
Вы можете вытащить массив в любой другой обратный вызов, используя тот же вызов getappdata
.
Смежные вопросы
- 1. Как определить, находится ли мышь над изображением в окне изображения?
- 2. Как определить, находится ли мышь над панелью меню?
- 3. Как определить, наводится ли мышь над элементом
- 4. Проверьте, находится ли мышь над элементом?
- 5. Проверьте, находится ли мышь над div
- 6. Проверьте, находится ли мышь над кругом - Java
- 7. проверить, находится ли мышь над объектом
- 8. Как определить, когда мышь (указатель) находится над текстом в JList?
- 9. Как проверить, находится ли мышь над определенным кругом без перекрытия?
- 10. Как узнать, находится ли мышь над окном верхнего уровня?
- 11. Определить, находится ли мышь в javascript/jQuery?
- 12. WPF - Определение, если мышь находится над UIElement
- 13. Определение того, находится ли мышь над определенным макетом
- 14. GUIDE в MATLAB
- 15. Краска, когда мышь находится над изображением
- 16. Изменить картинку, когда мышь находится над изображением
- 17. Как определить, находится ли мышь непосредственно над типом объекта в WPF
- 18. jquery check, если мышь находится над элементом
- 19. Потерянное мышь, когда мышь находится над внутренним элементом
- 20. Detect, если мышь находится над элементом
- 21. Изменение цвета кнопки, когда мышь находится над
- 22. Как определить, нажата ли мышь
- 23. Проверьте, находится ли мышь над несколькими элементами в JQuery?
- 24. Можно ли обнаружить, когда мышь находится над вкладкой браузера?
- 25. Суммируя над обычаем осями
- 26. Как определить, когда мышь над слоем HTML поверх Flash-фильма?
- 27. matlab guis using GUIDE
- 28. WPF TextBox обнаруживает, если мышь находится над текстом
- 29. Matlab GUIDE размывает изображение?
- 30. Является ли мышь над формой?
Спасибо за помощь, так или иначе, вы могли бы немного объяснить этот код? Я потерян. Кроме того, в моем графическом интерфейсе у меня есть функция, которая получает координаты от кликов: спасибо за помощь, так или иначе, вы могли бы немного объяснить этот код? Я потерян. Кроме того, в моем графическом интерфейсе у меня есть функция, которая получает координаты от кликов: 'function clickerCall (handle) [handles.markedFrames (handles.markedIndex) .x, handleles.markedFrames (handles.markedIndex) .y] = getpts (handle. axes1) handles.markedIndex = handles.markedIndex + 1 disp ([handles.markedFrames.x]) updateAxes (handles); 'и он должен идеально работать только тогда, когда над осями, спасибо! – sam
Кроме того, любая идея, как хранить данные из .IntersectionPoint в массив? Я пробовал что-то вроде x = eventData.IntersectionPoint (1) безрезультатно – sam
Итак, я попробовал это: 'handles.output = hObject; handles.axesPos = get (handleles.axes1, 'Position'); handles.myaxes = axes (... 'Units', 'Normalized', ... 'Position', [handleles.axesPos], ... 'ButtonDownFcn', @myclick ... ); 'в попытке использовать эту функцию в моем графическом интерфейсе, но ее невосприимчивость к какой-либо идее? извините за тонну вопросов – sam