空灵学院

 找回密码
 立即注册

扫一扫,访问微社区

搜索
查看: 1948|回复: 0

基于MATLAB的鼠标点击相应操作

[复制链接]

1137

主题

1761

帖子

7558

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7558
发表于 2014-1-19 19:38:40 | 显示全部楼层 |阅读模式
以下内容摘自好友lyqmath新浪博客,在此借花献佛。

前言
相比于VC++的MFC界面平台,个人感觉MATLAB的鼠标点击响应有点麻烦。这里介绍一种简单的处理方式,其核心依然是响应鼠标单击回调函数的编写。
代码
  1. % By lyqmath
  2. % DLUT School of Mathematical Sciences 2008
  3. % BLOG:http://blog.sina.com.cn/lyqmath
  4. function main()
  5. clc; close all;
  6. global hfig
  7. hfig = figure;
  8. hold on; box on;
  9. haxis = gca;
  10. x = linspace(0, 2*pi);
  11. y1 = sin(x);
  12. y2 = cos(x);
  13. line(y1, y2);
  14. axis equal;
  15. set(haxis, 'ButtonDownFcn', @click_ceshi);
  16. function click_ceshi(src, event)
  17. global hfig
  18. % 获取当前点坐标
  19. xy = get(hfig, 'CurrentPoint');
  20. % 获取gcf和gca的位置信息
  21. hpos = get(hfig, 'Position');
  22. apos = get(gca, 'Position');
  23. % 更新点的信息,获取点针对于gca的准确坐标信息
  24. x = (xy(1) - apos(1)*hpos(3))/(apos(3)*hpos(3));
  25. y = (xy(2) - apos(2)*hpos(4))/(apos(4)*hpos(4));
  26. xlim = get(gca, 'XLim');
  27. ylim = get(gca, 'YLim');
  28. x = x*(xlim(2) - xlim(1)) + xlim(1);
  29. y = y*(ylim(2) - ylim(1)) + ylim(1);
  30. % 标注
  31. text(x, y, 'Happy', 'color', rand(3, 1));
复制代码
结果


总结




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|空灵学院 ( 11033542 )

GMT+8, 2024-5-6 20:32 , Processed in 0.023835 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表