前记:

人机交互的方式--键盘开关、鼠标、触摸屏、体感传感器(Kinect、leap motion)等的使用大大促进人与机器的交流过程。

这里记录鼠标事件与MATLAB的结合,为后期机器人仿真控制打下基础---如鼠标直接拖动机器人运动(像很多机器人仿真软件里的作用一样,如Robotstudio、soldworks、proe\core、Adams等)。

1、鼠标画矩形

代码功能:运行代码在出现的figure窗口,点击鼠标画出矩形

k = waitforbuttonpress;

point1 = get(gca,'CurrentPoint'); % button down detected

finalRect = rbbox; % return figure units

point2 = get(gca,'CurrentPoint'); % button up detected

point1 = point1(1,1:2); % extract x and y

point2 = point2(1,1:2);

p1 = min(point1,point2); % calculate locations

offset = abs(point1-point2); % and dimensions

x = [p1(1) p1(1)+offset(1) p1(1)+offset(1) p1(1) p1(1)];

y = [p1(2) p1(2) p1(2)+offset(2) p1(2)+offset(2) p1(2)];

hold on

axis manual

plot(x,y)

2、鼠标拖动直线

function main

f =figure;

aH=axes('Xlim',[0 1],'Ylim',[0 1]);

h=line([0.5 0.5],[0 1],...

'color','red',...

'linewidth',4,...

'ButtonDownFcn',@startDragFcn);

set(f,'WindowButtonUpFcn',@startDragFcn);

function startDragFcn(varargin)

set(f,'WindowButtonMotionFcn',@draggingFcn);

end

function draggingFcn(varargin)

pt=get(aH,'CurrentPoint');

set(h,'Xdata',pt(1)*[1 1]);

end

function stopDragFcn(varargin)

set(f,'WindowButtonMotionFcn','');

end

end

3、显示坐标

function ff

x = 5:30;

y = x.^2-40.*x+400;

plot(x,y);

axis([5,30,-50,250]);

tb = text;

set(gcf, 'WindowButtonMotionFcn', @callback);

function callback(hObject, event)

loc = get(gca, 'CurrentPoint');

loc = loc([1 3]);

set(tb, 'string', num2str(loc), 'position', loc);

end

end

4、画轨迹并保存点坐标

function MouseDraw(action)

% MouseDraw 本例展示如何以Handle Graphics来设定滑鼠事件

% (MouseDraw Events)的反应指令(Callbacks)

% 本程序在鼠标移动非常快时,不会造成画“断线”

% global不能传矩阵

global InitialX InitialY FigHandle

if nargin == 0, action = 'start';

end

switch(action)

%%开启图形视窗

case 'start'

FigHandle = figure('WindowButtonDownFcn','MouseDraw down');

axis([-600 600 -600 600]); % 设定图轴范围

% axis off;

grid on;

box on; % 将图轴加上图框

title('手写体输入窗');

% % fprintf('start');

%%设定滑鼠按钮被按下时的反应指令为「MouseDraw down」

% set(gcf, 'WindowButtonDownFcn', 'MouseDraw down');

dlmwrite('IXT.txt', 10, 'delimiter', '\t', 'precision', 10);

dlmwrite('IZT.txt', 10, 'delimiter', '\t', 'precision', 10);

%%滑鼠按钮被按下时的反应指令

case 'down'

if strcmp(get(FigHandle, 'SelectionType'), 'normal') %如果是左键

set(FigHandle,'pointer','hand');

CurPiont = get(gca, 'CurrentPoint');

InitialX = CurPiont(1,1);

InitialY = CurPiont(1,2);

dlmwrite('IXT.txt', InitialX, '-append', 'delimiter', '\t', 'precision', 10);

dlmwrite('IZT.txt', InitialY, '-append', 'delimiter', '\t', 'precision', 10);

% 列印「MouseDraw down!」讯息

% % fprintf('MouseDraw down!\n');

% 设定滑鼠移动时的反应指令为「MouseDraw move」

set(gcf, 'WindowButtonMotionFcn', 'MouseDraw move');

set(gcf, 'WindowButtonUpFcn', 'MouseDraw up');

elseif strcmp(get(FigHandle, 'SelectionType'), 'alt') % 如果是右键

set(FigHandle, 'Pointer', 'arrow');

set( FigHandle, 'WindowButtonMotionFcn', '')

set(FigHandle, 'WindowButtonUpFcn', '')

fprintf('MouseDraw right button down!\n');

ImageX = importdata('IXT.txt');

ImageY = importdata('IZT.txt');

InputImage = ones(imSize);

roundX = round(ImageX);

roundY = round(ImageY);

for k = 1:size(ImageX,1)

if 0InitialX

step_x = x_gap;

else

step_x = -x_gap;

end

if Y > InitialY

step_y = y_gap;

else

step_y = -y_gap;

end

% 定义x,y的变化范围和步长

if abs(X-InitialX) < 0.1 % 线平行于y轴,即斜率不存在时

iy = InitialY:step_y:Y;

ix = X.*ones(1,size(iy,2));

else

ix = InitialX:step_x:X ; % 定义x的变化范围和步长

% 当斜率存在,即k = (Y-InitialY)/(X-InitialX) ~= 0

iy = (Y-InitialY)/(X-InitialX).*(ix-InitialX)+InitialY;

end

ImageX = [ix, X];

ImageY = cat(2, iy, Y);

line(ImageX,ImageY, 'marker', '.', 'markerSize',1, ...

'LineStyle', '-', 'LineWidth', 2, 'Color', 'Blue');

dlmwrite('IXT.txt', ImageX, '-append', 'delimiter', '\t', 'precision', 10);

dlmwrite('IZT.txt', ImageY, '-append', 'delimiter', '\t', 'precision',10);

InitialX = X; %记住当前点坐标

InitialY = Y; %记住当前点坐标

% 列印「MouseDraw is moving!」及滑鼠现在位置

% fprintf('MouseDraw is moving! Current location = (%g, %g)\n', ...

% CurPiont(1,1), CurPiont(1,2));

% % fprintf('MouseDraw move!\n');

% 设定滑鼠按钮被释放时的反应指令为「MouseDraw up」

% set(gcf, 'WindowButtonUpFcn', 'MouseDraw up');

%%滑鼠按钮被释放时的反应指令

case 'up'

% 清除滑鼠移动时的反应指令

set(gcf, 'WindowButtonMotionFcn', '');

% 清除滑鼠按钮被释放时的反应指令

set(gcf, 'WindowButtonUpFcn', '');

% 列印「MouseDraw up!」

% % fprintf('MouseDraw up!\n');

end

end

5、也是拖动直线的,不过一个拖动时,另一个不动。点击show position...在命令行返回数值(因为有GUI所以打包放在我的资源里了,需要的自己下)点击打开链接。

        

6、后记

以上为网上资源的收集,主要是供自己学习。如果碰巧你需要,甚幸~.~ //

matlab 鼠标事件,MATLAB鼠标事件应用(记录)相关推荐

  1. 基于OpenGL编写一个简易的2D渲染框架-07 鼠标事件和键盘事件

    这次为程序添加鼠标事件和键盘事件 当检测到鼠标事件和键盘事件的信息时,捕获其信息并将信息传送到需要信息的对象处理.为此,需要一个可以分派信息的对象,这个对象能够正确的把信息交到正确的对象. 实现思路: ...

  2. 手持设备点击响应速度,鼠标事件与touch事件的那些事

    前言 现在一直在做移动端的开发,这次将单页应用的网页内嵌入了app,于是老大反映了一个问题: app应用点击响应慢! 我开始不以为然,于是拿着网页版的试了试,好像确实有一定延迟,于是开始了研究,最后选 ...

  3. java监听鼠标双击_java鼠标双击事件 java鼠标双击监听

    爱学习的小伙伴们,可能都学习过java,但是你知道java鼠标双击事件是怎么实现的吗?不知道的话跟着小编一起来学习了解java鼠标双击事件吧. java鼠标双击事件实例介绍 public class ...

  4. java 监听鼠标点击_java 事件监听 - 鼠标

    java 事件监听 - 鼠标 //事件监听 //鼠标事件监听 //鼠标事件监听有两个实现接口 //1.MouseListener 普通的鼠标操作 //2.MouseMotionListener 鼠标的 ...

  5. JQuery的事件之鼠标事件

    最近在慕课网学习JQuery,然后在W3C参考相关资料(在这里感谢慕课网,感谢W3C)!样式和DOM都学完了,最近在学习事件,但是说实话很多东西真的不是很理解,手里倒是有源码,但是作为菜鸟问题就在这里 ...

  6. java 双击触发事件_java鼠标双击事件怎么实现

    很多人都学习过java,但是你知道java鼠标双击事件怎么实现吗,跟着学习啦小编一起学习ava鼠标双击事件. java鼠标双击事件的实现方法 鼠标的单双击事件在很多时候对我们帮助很大,但是在JAVA中 ...

  7. javascript鼠标双击时触发事件大全

    javascript事件列表解说 事件 浏览器支持 解说 一般事件 onclick IE3.N2 鼠标点击时触发此事件 ondblclick IE4.N4 鼠标双击时触发此事件 onmousedown ...

  8. JS拖动事件(鼠标拖动事件)手指事件(PC移动端拖拽)

    写了好几次的PC端和移动端的拖拽效果了,每次都要重新查阅资料,现在做个总结记录,方便以后随时查阅 要想写拖拽事件,首先得了解三块知识点: PC的鼠标拖动事件 移动端的手指事件 能拿到被移动元素的高宽, ...

  9. 常用鼠标事件,键盘事件总结

    今天学习了学习了QQ登录面板的拖拽,关闭,切换登录状态.完全自己练习写了一遍.通过自己动手练习,对html,css,JavaScript又进一步的巩固与拓展. 制作静面图展示: 由于是初步的学习,发现 ...

  10. jQuery jQuery鼠标混轮滚动事件

    jQuery鼠标换轮滚动事件 1.鼠标混轮滚动事件 2.添加class属性 3.实现屏幕滚动效果 css代码部分 html与javascript部分 1.鼠标混轮滚动事件 代码如下所示: <!D ...

最新文章

  1. ML之XGBoost:XGBoost算法模型(相关配图)的简介(XGBoost并行处理)、关键思路、代码实现(目标函数/评价函数)、安装、使用方法、案例应用之详细攻略
  2. python获取工作日_python – 获取下一个工作日的日期
  3. 阿里巴巴飞天大数据架构体系与Hadoop生态系统
  4. Linux中让普通用户拥有超级用户的权限
  5. 学习笔记之lvm基本应用及其扩展和缩减实现
  6. [VBA]工作需求,写了段VBA。EXCEL的效率很差
  7. java 读写mysql_Java读写MySQL数据库小实例
  8. JVM(二):垃圾回收
  9. calico/node is not ready: BIRD is not ready: BGP not established with 172.19.77.23
  10. 2.vue的不更新特性-重用机制和key属性-data及其他字段-vue生命周期
  11. Autodesk HSMWorks Ultimate 2019 Crack 破解版
  12. php仿信用卡积分商城,中信银行信用卡积分购物商城
  13. 基于生长的棋盘格角点检测方法 代码介绍
  14. 使用电位器控制LED灯的亮度
  15. CyberSecurity Knowledge Base笔记
  16. 划分计算机发展的四个阶段主要依据,计算机的发展划分为4个阶段,分别为什么、什么、什么和什么。...
  17. 如何提高仓库操作管理效率?
  18. 《痛点:挖掘小数据满足用户需求》
  19. 硬盘测试之influx-stress
  20. html表格摘要不会显示吗,Html表格lt;tablegt;还是须要加入一些标签进行优化,能够加入标题lt;captiongt;和摘要lt;table summarygt;...

热门文章

  1. 大小写数字转换(大小写数字转换)
  2. 过河问题(经典贪心)
  3. 大数据技术课堂小笔记
  4. HSPC氢化大豆磷脂酰胆碱CAS92128-87-5
  5. js调用百度API显示全景图
  6. [HTML_CSS]@media 实现页面自适应布局
  7. 技能大赛计算机主板维修报表,2017年职业院校技能大赛高职组电子产品芯片级检测维修与数据恢复赛项样题...
  8. 电脑图片无损放大怎么操作?怎么无损放大图片?
  9. 马云创办阿里和蚂蚁金服如此成功,离不开大数据和人工智能的功劳
  10. element UI 表格实现 表尾合计行 ——小肉包