问题标签 [mouse-coordinates]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
499 浏览

javascript - 使用 ctx.getTransformation() 获取变换后的画布鼠标坐标

执行旋转后,我正在使用以下函数在画布上获取鼠标坐标。

我在阅读html5-canvas-transformation-algorithmbest-way-to-transform-mouse-coordinates-to-html5-canvass-transformed-context后使用了倒置变换矩阵

我让用户用鼠标绘制矩形,我需要在转换后获取鼠标 x,y 坐标,但是一旦画布旋转(比如 90 度),矩形就不再跟随鼠标指针。

有谁知道我做错了什么?

0 投票
3 回答
3082 浏览

java - 如何使用 AccessibilityService 在 Android 上执行拖动(基于 X、Y 鼠标坐标)?

我想知道如何基于 X、Y 鼠标坐标在 android 上执行拖动?考虑两个简单的例子,Team Viewer/QuickSupport 分别在远程智能手机上绘制“密码模式”和 Windows Paint 的 Pen。

在此处输入图像描述

在此处输入图像描述

我所能做的就是模拟触摸(with dispatchGesture()and also AccessibilityNodeInfo.ACTION_CLICK)。

我找到了这些相关链接,但不知道它们是否有用:

下面是我的工作代码,用于将鼠标坐标(PictureBox控制内部)发送到远程电话并模拟触摸。

Windows 窗体应用程序:


编辑:

我最后一次尝试是使用鼠标坐标(C# Windows 窗体应用程序)和自定义 android 例程(参考上面链接的“滑动屏幕”代码)的“滑动屏幕”,分别:

安卓无障碍服务

这会产生以下结果(但仍然不能像 TeamViewer 那样绘制“模式密码”)。但就像下面评论中所说的那样,我认为通过类似的方法,这可能可以使用持续手势来实现。欢迎在这个方向提出任何建议。

在此处输入图像描述

在此处输入图像描述


编辑2:

当然,解决方案是像以前的Edit中所说的那样继续手势

下面是我在这里找到的假定固定代码=>

安卓无障碍服务:

然后,我的疑问是:如何正确发送上述代码的鼠标坐标,以及可以向任何方向拖动的方式?有什么想法?


编辑3:

我发现了两个用于执行拖动的例程,但它们使用的是UiAutomation + injectInputEvent()。AFAIK,事件注入仅适用于此处此处所述的系统应用程序,我不想要它。

这是找到的例程:

然后为了实现我的目标,我认为第二个例程更适合使用(遵循逻辑,不包括事件注入)与编辑 2pictureBox1_MouseDown上显示的代码并分别发送和pictureBox1_MouseMove(C# Windows 窗体应用程序)的所有点以Point[]动态填充和pictureBox1_MouseUp发送cmd 执行例程并使用这个数组填充。如果您对第一个例程有想法,请告诉我:D。

如果在阅读此编辑后您有可能的解决方案,请在答案中告诉我,同时我将尝试测试这个想法。

0 投票
2 回答
644 浏览

python - Python 在坐标处找不到 tkinter 项目

我有这个代码:

当我运行它时,我得到:

最后两行应分别读取项目5663找到。

我在屏幕上有 10 张图片,我试图找出点击的是哪一张。更糟糕的是 X,Y 坐标被传递给屏幕位置而不是画布位置,我必须弄清楚如何转换:

在 Python 的 Tkinter 中,找出用户点击了哪个图像(项目/标签 ID)的最简单方法是什么?


带有窗口图像的监视器图像

要了解画布的外观:

wman2 edp-1-1.png

这是三个显示器 eDP-1-1 之一的部分。在最坏的情况下,有四个窗口打开:

  • gedit有问题的源代码在底部打开。
  • 带有此问答的 Firefox 浏览器在上面打开。
  • Nautilus 窗户在上面。
  • 顶部的 Gnome 终端。

窗口堆叠顺序还不是很完美,因为wmctrl它用于在桌面上获取所有打开的窗口,而无需按堆叠顺序进行任何排序。

所以用户会点击最接近他们想要选择的图像的左上角。用户也可以点击没有被窗口覆盖的空白监视器区域来选择监视器图像。- 带有本网站的 Firefox 浏览器

标签电流也是一关

我输入了这段代码:

结果是这样的:

tag_current应该是42,但被报告为41

63报告6456正在报告的问题大致相同70(之前报告为57上次运行作业)。


12小时更新

12小时后,我越来越近了。需要将窗口坐标(三个显示器的整个桌面)转换为画布坐标(其中一个显示器上的一个 Python 程序):

希望今晚能解决问题...

0 投票
0 回答
165 浏览

delphi - 如何将 TImage 组件内的鼠标坐标正确发送到 Android Path.moveTo() 和 Path.lineTo() 方法?

我找到了一个 android 代码,您的目标是模拟 L 形拖动路径:向右 200 像素,然后向下 200 像素。这些值是在代码中预定义的,如何使用TImage组件的鼠标坐标和您的事件(“mousedown”、“mouseup”等)来实现?PS:我需要在我的远程访问示例(Delphi 控制器> Android 客户端)中实现此功能。

这是安卓代码>

0 投票
1 回答
1629 浏览

javascript - 如何根据屏幕大小正确调整画布大小?Javascript (p5.js)

所以,正如问题所说,我需要根据屏幕大小调整画布大小。然而,事实并非如此。我还需要按比例更新鼠标坐标。似乎我犯了一个致命的错误,即从一开始就没有考虑屏幕尺寸,因为这是我的第一个合适的游戏。我是根据我的 1080p 屏幕制作的游戏。诸如定位东西和检查鼠标坐标之类的东西都是基于 1920x1080 的画布。请帮忙!

Github 链接:

  1. 主游戏,可以运行,但大小取决于您的屏幕:https ://proqbr.github.io/powerdown/
  2. 所有文件(只有 15MB,如果您想通过下载查看):https ://github.com/proqbr/powerdown
  3. sketch.js(关于这个的几乎主要文件):https ://github.com/proqbr/powerdown/blob/master/sketch.js

主要是在 sketch.js 中,第 260-263 行是一些 createCanvas 行function setup()​​,未注释createCanvas(1920,1080);的是我正在使用的。在第 302-314 行是一堆 camera.zoom 行,未注释的行是camera.zoom = 1;因为在我的屏幕上主菜单不需要缩放。

第 352 行以后是一些关于知道玩家点击位置的代码,问题是这样的。我确实知道如何使用windowWidth&使画布的内容在所有屏幕上看起来都正确调整大小,windowHeight但是导致问题的是不正确的鼠标坐标。如果有人可以提供帮助,那就太好了。

如果你的游戏有问题,这里有一个快速的第二个视频游戏菜单是如何工作的,尽管它很简单:https ://youtu.be/eZZw5CmOXEE

0 投票
1 回答
609 浏览

winapi - 设置进程 DPI 感知,以便系统补偿缩放因子

我有以下鼠标钩子程序(为解释而简化)。

我从钩子中获得的鼠标坐标不会由显示器的缩放因子调整。
无论我将显示器的缩放系数设置为 100% 还是 200%,鼠标钩总是给我物理像素。

另一方面,GetCursorPoswinapi 函数以逻辑像素给出坐标。即如果缩放因子为200%,GetCursorPos将给出除以2的坐标,而鼠标钩将给出未调整的数字。

据此:
https ://docs.microsoft.com/en-us/windows/win32/api/shellscalingapi/ne-shellscalingapi-process_dpi_awareness

如果程序支持 DPI,系统会补偿缩放因子,以便程序继续工作,就好像什么都没发生一样。

这正是 . 的返回值所发生的情况GetCursorPos。它提供逻辑像素而不是物理像素。

另一方面,鼠标钩子程序没有被系统调整。

我尝试在清单中将我的程序设置为不支持 DPI,如下所示:

但这没有什么区别。我还尝试将其声明为可识别 DPI,如下所示:

这也没有任何区别。

是否有任何设置可以通过清单或其他方式添加到我的程序中,这将使鼠标钩子程序能够提供逻辑坐标GetCursorPos

我正在 Windows 10 中测试所有这些。


跟进:

我发现了问题。我的清单文件不正确。XML 命名空间未正确设置。

这是有效的。

为了让系统为程序提供逻辑坐标,程序必须是 DPI 感知的。没有表现出 DPI 感知能力的程序将处理不一致的坐标,不仅在鼠标钩子中,也在 BitBlt、IAccesibility、UIAutomation 等中。

我不明白为什么微软决定倒退。没有表现出 DPI 意识的程序应该像往常一样运行,而不是相反。

这意味着无论何时在监视器上设置缩放因子,大多数程序都会默认中断。为了破解它们,它们必须具有 DPI 意识,并且......就像那样......它们将再次工作。

0 投票
0 回答
255 浏览

mouseevent - MPV播放器获取视频时间和鼠标坐标

我想使用 MPV 播放器来执行对象的手动跟踪。我只是想在电影运行时跟踪鼠标在视频窗口上的点击,并将视频时间(如果可能的话以帧数)、x 和 y 绝对位置(相对于图像角,因此值不应该)复制到剪贴板受图像缩放或平移的影响)。我看到这段代码来获取时间,我尝试修改以获得基于我在网络上找到的另一个“.lua”脚本的 x 和 y 位置,但显然它没有运行(我不是程序员):

我试图“合并”这段代码和另一段代码:

所以我生成了这段代码:

如果有人可以帮助我,我将不胜感激,因为我无法执行这个看似简单的任务。

谢谢,

加布里埃尔

0 投票
1 回答
316 浏览

delphi - 如何仅捕获屏幕上的鼠标单击区域?

每次单击鼠标左键时,以下代码都会对桌面进行屏幕截图。但是我只想对发生鼠标单击的区域进行屏幕截图,例如,如果在某个网站上单击某个按钮,则屏幕截图必须仅是该按钮的屏幕截图。

在此处输入图像描述

动图

在此处输入图像描述

这个有可能?

如果是的话,如果有人显示代码示例,我将非常高兴!提前致谢。


编辑:

我在 VB.NET 中找到了一个替代方案。但是如何用 Delphi 代码解决?

0 投票
1 回答
109 浏览

delphi - 如何将鼠标点击 X、Y 与特定窗口句柄对齐?

参考我之前的问题,现在我有这个公式:

将鼠标点击坐标发送到远程屏幕;准确且工作正常,除非我希望将点击发送到某个窗口的特定句柄,否则点击不会发生在确切的位置,例如:

接收鼠标点击:

有什么解决办法吗?

0 投票
0 回答
57 浏览

grid - 如何在 Blazor Web Assembly 中获取鼠标坐标

我创建了一个通用网格组件,在最后一列中,我放置了一个带有点的图标,应该打开每一行的编辑菜单,就像这样......

在此处输入图像描述

如何计算鼠标坐标以在单击的行编辑图标附近打开编辑窗口?在编辑窗口中,我需要显示编辑、删除、移动按钮。