Matlab:获取图中点击的坐标但保留按钮回调

2024-03-17

我需要一个函数,它可以为我提供在图形窗口中单击的坐标以及单击的鼠标按钮(左、中、右或按下 KEY)的坐标,但我仍然想使用 uicontrol() 按钮。我目前正在使用 ginput() ,它工作正常,但按钮回调函数没有执行,因此我认为 ginput() 会覆盖它们:( 非常感谢!

编辑:来自马特(第二个盆)的“编辑”代码可以执行此操作,但只是不提供单击按钮的功能:http://www.mathworks.com/matlabcentral/answers/7528-ginput-in-a-gui http://www.mathworks.com/matlabcentral/answers/7528-ginput-in-a-gui :(

EDIT最后我自己想通了。我希望你喜欢它。我对 matt 的原始代码进行了更改:

function varargout = ginput_ax(ha,n)
if nargin<2
    n=1;
end
k = 0;
button = 0;
xy = zeros(n,2);
hf = get(ha,'parent');
figure(hf);
set(hf,'WindowButtonMotionFcn',@changepointer)
set(ha,'ButtonDownFcn',@getpoints)
hp = get(ha,'children');
ht = get(hp,'hittest');
set(hp,'hittest','off')
axlim = get(ha,'Position');
fglim = get(hf,'Position');
x1 = axlim(1)*fglim(3) + fglim(1);
x2 = (axlim(1)+axlim(3))*fglim(3) + fglim(1);
y1 = axlim(2)*fglim(4) + fglim(2);
y2 = (axlim(2)+axlim(4))*fglim(4) + fglim(2);
waitfor(hf,'WindowButtonMotionFcn',[])
if iscell(ht)
    for jj=1:length(ht)
        set(hp(jj),'hittest',ht{jj})
    end
else
    set(hp,'hittest',ht)
end

% Mouse-Button recognition...
if(strcmp(button, 'normal'))
    button = 1; % left
elseif(strcmp(button, 'extend'))
    button = 2; % right
elseif(strcmp(button, 'alt'))
    button = 3; % middle
else
    button = 4; % double click any mousebutton
end

if nargout==3 
    varargout{1} = xy(:,1);
    varargout{2} = xy(:,2);
    varargout{3} = button;
elseif nargout==2
    varargout{1} = xy(:,1);
    varargout{2} = xy(:,2);
else
    varargout{1} = xy;
end
    function changepointer(~,~)
        pntr = get(0,'PointerLocation');
        if pntr(1)>x1 && pntr(1)<x2 && pntr(2)>y1 && pntr(2)<y2
            set(hf,'Pointer','crosshair')
        else
            set(hf,'Pointer','arrow')
        end
    end
    function getpoints(src,evnt)
        cp = get(src,'CurrentPoint');
        button = get(hf, 'SelectionType');
        k = k+1;
        xy(k,:) = cp(1,1:2);
        if k==n
            set(hf,'Pointer','arrow')
            set(hf,'WindowButtonMotionFcn',[])
            set(ha,'ButtonDownFcn',[])
        end
    end
end

只需将其复制到一个新文件(例如“ginput_ax.m”),然后通过以下方式调用它

figure
ginput_ax(gca, N)

whereas N是捕获的点数!甚至比 ginput 更好,因为 uicontrol 按钮可以工作,可以识别双击,并且十字准线指针仅显示在实际绘图中,而不显示在图形窗口中绘图周围的灰色边框上:) 希望您喜欢它!


我自己找到了一个很好的工作解决方案,它比 ginput 更好,因为十字线仅显示在实际绘图中(因此在轴内)。请参阅上面我的编辑!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matlab:获取图中点击的坐标但保留按钮回调 的相关文章

  • 从 jQuery 事件访问函数中的参数*和*事件

    这是我不久前问的另一个问题的后续问题 通常 您可以从 jQuery 事件的函数调用中访问事件 如下所示 item live click functionToCall 并在函数中 function functionToCall ev do s
  • 工具提示弹出窗口内的 Bootstrap 输入字段已从输出 html 中删除

    您好 我正在使用 bootstrap 4 3 1 并包含 popper 1 14 7 通常我可以在弹出窗口 工具提示的内容中添加输入字段 我从什么时候开始就不知道了 但是当我将输入字段放入内容中时 只有文本可见 当我查看源代码 编译后的 h
  • 如何制作复选按钮? (带有标签的隐藏复选框作为按钮:仅限 CSS)

    Using 方法1 创建可点击标签 https stackoverflow com a 6293626 1326147 用 CSS 隐藏复选框 https stackoverflow com a 18078908 1326147 and 使
  • 如何每次使用按钮将数据添加到 MATLAB 中的现有 XLSX 文件?

    我有一个函数可以生成一些变量 例如分数 对 错 未回答 使用按钮调用此功能 问题是如何每次将函数生成的这些值添加 附加到 XLSX 文件中 或者 如何创建 MAT 文件以便可以添加它 可能的解决方案是什么 附加到 xls 文件所涉及的挑战是
  • 虚拟回调接口

    在 Eclipse 为您创建的来自 Google 的示例主从流代码中 片段中包含以下内容 private Callbacks mCallbacks sDummyCallbacks public interface Callbacks pub
  • 在 Matlab 的命令窗口中获取旧式帮助

    问题的简短版本 在最新版本的 Matlab 中 我在 Windows 上的 R2014b 和 R2015a 中看到过 当您键入help foo你得到一个简要描述 简介函数及其签名 例如 输入help bsxfun产生类似这样的东西 只有更好
  • C++ 类成员函数和来自 C API 的回调

    我正在尝试学习如何称呼它write data 函数从funmain 类中的函数如下面的代码所示 我知道如果我只列出这两个函数而不将其放入类中 该程序就可以工作 curl easy setopt curl CURLOPT WRITEFUNCT
  • 如何在Matlab中绘制网络?

    我有一个矩阵AMatlab中的维数mx2每行包含两个节点的标签 显示网络中的直接链接 例如 如果网络有4矩阵的节点A可能A 1 2 1 3 2 1 2 4 3 2 4 1 4 2 其中第一行表示有一个链接来自1 to 2 第二行表示有一个链
  • Matlab 一个图上有多个图例 2014b

    我想在一个地块上有多个传说 该解决方案在 2014b 版本之前完美运行 我试图弄清楚如何使用手柄优雅地制作它 但到目前为止还没有成功 欢迎任何想法 2013b 的示例 x 1 50 y1 sin x 2 y2 cos x 2 f figur
  • .NET 远程处理回调

    是否可以通过远程处理传输回调 我想做一些类似的事情myRemoteObject PerformStuff x gt Console WriteLine x 如果没有 我将如何实现等效的功能 Edit 我知道 Remoting 已被 WCF
  • 我如何编写一个名为 dedbi 的 MATLAB 函数,它将输入 xtx 作为字符串并返回另一个字符串 xtxx 作为输出。

    dedbi 反转单词 即 a 将被 z 替换 b 将被 y 替换 c 将被 x 替换 依此类推 dedbi 将对大写字母执行相同的操作 即将字符串 A 替换为 Z 将 B 替换为 Y 将 C 替换为 X 依此类推 如果我给函数这个字符串 a
  • 使用 jQuery/JavaScript 将文本框值复制到剪贴板

    我有一个文本框和按钮 如下所示 div class col xs 11 style padding 20px 0 div
  • 如何在Matlab中打印带有千位分隔符的整数?

    我想使用逗号作为千位分隔符将数字转换为字符串 就像是 x 120501231 21 str sprintf 0 0f x 但随着效果 str 120 501 231 21 如果内置fprintf sprintf做不到 我想可以使用正则表达式
  • Twitter 的推文按钮有回调吗?

    有没有办法在 Twitter 的推文按钮上注册回调 我希望能够跟踪我网站上的哪些特定用户在 Twitter 上发布了链接 我无法添加 onClick 事件 因为它是跨域 iFrame 还有其他想法吗 我见过一种方法 https stacko
  • MATLAB 编译器与 MATLAB 编码器

    两者有什么区别 据我了解 MATLAB Compiler将MATLAB代码包装成 exe文件 这样就可以在不安装MATLAB的情况下使用它 并且只需要MCR 除此之外 MATLAB Builder NE 还可以用于生成与 Net 框架一起使
  • 将一个文本框的值分配给另一个文本框

    看过类似问题的答案 但对于我的一生 我无法弄清楚我做错了什么 我有两个文本框和一个按钮 当文本添加到第一个文本框并按下按钮时 我想将第一个文本框的值 文本应用到第二个文本框
  • 有没有办法改变输入类型=“日期”格式?

    默认情况下 输入type date 显示日期为YYYY MM DD 问题是 是否可以将其格式强制为 DD MM YYYY 无法更改格式 我们必须区分有线格式和浏览器的表示格式 接线格式 The HTML5日期输入规范 https www w
  • 在matlab中不使用for循环检查数组中的成员资格

    我想简化这段代码 使其无需 for 循环即可工作 for i 1 N for j 1 N if ismember j A PID i i TFP i j PID i i end end end 其中A是一个包含一些标签的矩阵 我之前存储的T
  • 自定义 UITableViewCell 选择样式?

    当我点击我的UITableViewCell 当我单击单元格时 背景部分 我的背景图像未覆盖的区域 会变成蓝色 另外 所有的UILabel单击时单元格上的 s 变为白色 这就是我想要的 然而 我不想要的是当我点击它时的蓝色背景 但如果我这样做
  • Matlab:3D 堆积条形图

    我正在尝试创建一个 3D 堆积条形图 如这个问题所示 Matlab 中的 3D 堆叠条形图 https stackoverflow com questions 13156133 3d stacked bars in matlab 5D 然而

随机推荐

  • 如何使用 daniel gindi/Swift 中的图表库在饼图中显示百分比符号(IOS 图表)

    我正在使用图表框架 由 Daniel gindi 设计 工作正常但是 如何在饼图上显示 符号 我还尝试使用 NSNumberFormatter 方法将数据值转换为百分比 但没有得到 符号 我在这里上传代码 IBOutlet var pieC
  • Bootstrap 3 折叠(从左到右)[重复]

    这个问题在这里已经有答案了 http getbootstrap com javascript collapse http getbootstrap com javascript collapse 有没有办法让这个菜单从左向右滑动 我环顾四周
  • 如何按对象属性vbscript对字典进行排序

    我正在尝试使用我在网上找到的函数对字典进行排序 该函数通过对象属性 即 Id 进行排序 但在此For Each i In dict我收到此错误消息 Microsoft VBScript 运行时错误 对象不支持此属性或方法 我努力了For E
  • 使用 Interop.Excel 将 Excel 转换为 PDF 时不显示图像

    我正在使用 Interop Excel 将 excel xlsx 2010 转换为 PDF 以用于应用程序 在我的开发机器上它工作正常并且图像显示正确 但是 在服务器上 当 Excel 转换为 PDF 时 图像 一些通过代码插入 另一些在模
  • FireMonkey 控件是否具有与 VCL Invalidate() 等效的方法?

    我正在创建一些自定义 FireMonkey GUI 控件 组件需要更新以响应用户交互 VCL 控件可以调用 Invalidate 将其放入队列中进行重绘 FireMonkey 有等效的方法吗 FireMonkey 控件有一个 Repaint
  • 在 Flutter/Dart 中如何将参数从命令行传递到 main ?

    如何运行命令并使用 Flutter Dart 传递一些自定义参数 以便可以在main 调用例如 flutter run device my custom arg 那么我可以通过以下方式访问它 void main List
  • 运行 Pig 脚本时的堆空间问题

    我正在尝试执行包含大约 3000 万数据的 Pig 脚本 但收到以下堆空间错误 gt ERROR 2998 Unhandled internal error Java heap space gt gt java lang OutOfMemo
  • 应将哪些文件导入到 Web 服务项目的 Subversion 存储库中?

    我使用Web服务自上而下的方法在Eclipse中创建了一个Java项目 即创建一个WSDL文件并使用它来生成带有axis2的Skeleton Java类和Web服务 因此 有很多自动生成的文件和axis2 jar图书馆 我的项目具有以下文件
  • 如何在 codeigniter 挂钩文件中加载模型

    这是我的问题 我正在构建一个需要过滤器的应用程序 我已经让过滤系统正常工作 我什至可以查明我当前想要访问的实际方法 问题是我无法从过滤器文件访问 CI 核心 我在网上搜索过 虽然我找到了一些建议的解决方案 例如 Dipping into C
  • @xmlschema jaxb package-info.java 编译错误

    我尝试在包级别使用注释 但从 Eclipse 中收到编译错误 我有课Head具有以下包 注释 javax xml bind annotation XmlSchema xmlns javax xml bind annotation XmlNs
  • Facebook 页面的 webhook [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我在一页上拥有管理员访问权限 我创建了 facebook 应用程序 并在我的网站上创建并验证了 webhook 问题是我
  • Html.ListBoxFor错误问题asp.mvc 3

    我的代码中有类似的内容 但收到错误 异常详细信息 System ArgumentException 值不能为 null 或空 参数名称 名称 我究竟做错了什么 感谢帮助 model IEnumerable
  • 表单外的复选框

    由于设计要求 我需要在表单外部放置几个复选框 是否仍然可以将这些值包含在表单的提交操作中 也许用javascript或其他我没有想到的方式 如果您使用 HTML5 则有一个form属性 请参见以下示例 p p
  • 如何使用 web3.js 1.0 进行身份验证和发送合约方法

    我对如何使用 web3 1 0 库执行合约的方法感到困惑 此代码有效 只要我先手动解锁帐户 var contract new web3 eth Contract contractJson contractAddress contract m
  • 使用回车符迭代文件

    有没有办法使用语法迭代文本文件 with open filename r as f for line in f print f 如果文件仅包含回车符而没有换行符 到目前为止我能做的就是 with open filename r as f f
  • 我所有的 javascript 在底部添加了一些代码

    我的网站使用 CodeIgniter 今天我发现我的网站在所有 JavaScript 文件 包括 jQuery 文件 的底部添加了一些代码 代码是这样的 4fd970 You are blocked by day limit 4fd970
  • 无法签入 TFS 的更改

    我在尝试签入对 Visual Studio Online 上托管的 TFS 的更改时遇到问题 上周才开始 我在跑步Visual Studio Professional 2017版本15 5 2 当我尝试签入更改时 出现以下错误 C My W
  • 将属性绑定到列表视图数据模板内的元素

    我无法让数据绑定在DataTemplate以 Xamarin 形式 我可以让它与ListView 即绑定RowHeight 但一旦进入DataTemplate 将内容设置为我的 ViewModel 的属性没有任何影响 在下面的示例中 如果我
  • Sqlite计算查询中YYYYMMDD日期格式之间的天数差异

    我已经以 YYYYMMDD 格式存储了一些患者记录的治疗日期 tdate 和接收日期 rdate 我想查询rdate tdate结果小于30的记录 我的尝试是 SELECT FROM table WHERE rdate tdate lt 3
  • Matlab:获取图中点击的坐标但保留按钮回调

    我需要一个函数 它可以为我提供在图形窗口中单击的坐标以及单击的鼠标按钮 左 中 右或按下 KEY 的坐标 但我仍然想使用 uicontrol 按钮 我目前正在使用 ginput 它工作正常 但按钮回调函数没有执行 因此我认为 ginput