java如何获取一个控件在屏幕上的位置(XY坐标)

java如何获取一个控件在屏幕上的位置(XY坐标),第1张

int

getX()

返回组件原点的当前 x 坐标

int

getY()

返回组件原点的当前 y 坐标。

这是JComponent 类提供的方法 javaswing 包中的所有控件都继承了这个类

或者你也可以使用下面这个方法 这是 Component 类提供的方法也是个超类 只是坐标被封装成Point类了

Point getLocation()

有几种方法实现:

1创建一个桌面大小的"透明窗体",并且边框设为0。这样窗口坐标就是桌面坐标,在自己程序的消息循环中捕获鼠标消息就行了。QQ、RTX的"屏幕截图"功能就是这样实现的。

2使用SetWindowsHookEx捕获WH_MOUSE、WH_GETMESSAGE消息。并将SetWindowsHookEx的第四个参数设置为NULL,捕获全局的消息。然后在第二个参数的回调函数中调用CallNextHookEx,以及监听鼠标消息。程序关闭后,别忘记调用UnhookWindowsHookEx。还有就是程序要写在DLL中,因为系统会把它注入到其它进程中去捕获消息的。可以参考网上SetWindowsHookEx实现键盘记录的例子,实现鼠标记录。

3驱动中Inline Hook Mouclass鼠标类驱动的MouseClassServiceCallback函数,获得鼠标输入。

建议使用1、2中的一种方法。没必要开发驱动,这里只是介绍有几种方法可以获得鼠标全局点击事件。

来自:>

Point p = shelltoDisplay(btngetLocation());

Systemerrprintln(px + " "+py);

把局部坐标转化成全局坐标。

你拖动shell,可以看到xy不同了。

题主想问的是C++builder控件坐标怎么变成屏幕坐标吗?

1、转换一个给定点的坐标。使用ClientToScreen将客户区坐标转换为全局屏幕坐标,使用ScreenToClient完成相反的工作。

2、返回窗体中在指定坐标位置存在的控件。

3、使窗体中的某个控件获得焦点、失去焦点。

4、使窗体区域失效而重画。

5、设置窗体比例以改变窗体大小。参数M和D分别为放缩倍数的分子和分母。

6、以模态窗体的方式显示窗体。该方法可以进行显示并得到返回值。

本来希望的效果是在对话框上设置两个picture控件,分别显示两幅图像,然后将两幅图像中的相似部分利用一条直线连接起来。要实现这样的效果需要知道相似位置在这两幅图中的坐标以及这两个控件在对话框上的坐标,然后通过加减运算就可以得到图像上的相似区域在对话框的坐标,直接将这两个坐标用直线连接就可以了。

为此,如何获得控件在对话框上的坐标是关键问题。编写了如下的测试小程序,目的是将两个picture控件中的点用直线连接起来,比较直观的是picture控件的四个角,所以程序中是将控件的拐角连接起来。首先在对话框上并排放置两个同样大小的picture控件,将他们的标识分别设成IDC_LEFT和IDC_RIGHT,然后添加两个编辑框用于显示picture控件的大小,给这两个编辑框添加相应的数据成员m_row和m_colume。添加一个按钮用于连接picture控件中的点,为这个按钮添加成员函数OnMatch() 。

void CControlDlg::OnMatch(){// TODO: Add your control notification handler code here

CRect rectL,rectR;

GetDlgItem(IDC_LEFT)->GetWindowRect(&rectL);//获取控件相对于屏幕的位置

ScreenToClient(rectL);//转化为对话框上的相对位置

GetDlgItem(IDC_RIGHT)->GetWindowRect(&rectR);//获取控件相对于屏幕的位置

ScreenToClient(rectR);//转化为对话框上的相对位置

m_row=rectLbottom-rectLtop;

m_colume=rectLright-rectLleft;

UpdateData(FALSE);

CClientDC dc(this);

dcMoveTo(rectLleft,rectLtop);

dcLineTo(rectRright,rectRbottom);

dcMoveTo(rectLright,rectLtop);

dcLineTo(rectRleft,rectRbottom);

dcMoveTo(rectLleft+m_colume/2,rectLtop+m_row/2);//连接两个控件中心点

以上就是关于java如何获取一个控件在屏幕上的位置(XY坐标)全部的内容,包括:java如何获取一个控件在屏幕上的位置(XY坐标)、如何获取任意窗口中的控件的位置,返回坐标vc的、SWT中如何获取控件在屏幕上的位置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9591372.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存