如何在Matlab中的用户界面中取得鼠标坐标
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何在Matlab中创建用户界面(GUI)的相关帮助请参见:MA TLAB-->Creating Graphical User Interfaces
下面举例如何在用户界面中取得鼠标点击时的坐标。
1.创建一个简单的GUI
a)在MA TLAB命令行敲入“guide”,可以看到下面的对话框
b)选择GUI with Axes and Menu后,点击“OK”。
c)将它另存为TestFig.fig
d)此时MA TLAB会自动生成一个TestFig.m文件,回头我们要修改其中的代码,现
在先不管它。
e)回到TestFig.fig界面,可以点击右上角的绿色三角按钮,看看运行情况。
2.为按钮设置被点击后执行的代码
a)找到点击Update按钮后执行的代码:用鼠标右击Update按钮后,选择View
Callbacks Callback。
此时MA TLAB自动定位到该按钮被按下后执行的代码处。
b)我们现在修改掉原来的行为,变成记录下用户每次点击鼠标的坐标(用ginput这
个函数可以获得鼠标的坐标),并在界面上画出每个点。
i.我们首先删除这些代码(或者用百分号%注释掉这些代码)
popup_sel_index = get(handles.popupmenu1, 'Value');
switch popup_sel_index
case 1
plot(rand(5));
case 2
plot(sin(1:0.01:25.99));
case 3
bar(1:.5:10);
case 4
plot(membrane);
case 5
surf(peaks);
end
ii.然后在cla;这句代码后面加上下面的代码
% we use points[x, y] to store each point
points = [];
pointNum = 0;
% we want to show all points on the same fig
hold on;
% we also want to fix the region in which points are located
axis([0 1 0 1]);
% 1,2,3 means left, middle, right mouse button is clicked
button = 1;
while(button ~= 3) % user use right click to input the last point % use ginput to get graphical input from mouse
[x, y, button] = ginput(1);
% plot the point
plot(x,y,'bo');
% save
pointNum = pointNum + 1;
points(pointNum, :) = [x y];
end
disp(['These points are stored:']);
disp(points);
完成后像这个样子
c)现在可以测试一下看看了,点击绿色小三角后,先点击Update按钮,然后用鼠标
左键点击界面画点,用右键输入最后一个点。并且可以在MA TLAB的命令行窗口
看到程序输出的所有点的坐标。
3.其他问题
a)如果要运行程序,在MA TLAB命令行窗口输入”TestFig”即可。
b)如果要调出界面窗口并修改之,在MA TLAB命令行窗口输入”guide”后打
开”TestFig.fig”文件即可。
c)由于我们直接删除了部分代码,关闭程序的时候可能会提示错误。
剩下的工作就看你们的了。