我正在尝试获取屏幕上控件的绝对位置。我正在使用两台显示器,结果并不是那么好......
我正在做的是打开另一个表单来捕获图像,然后将此图像传递给主表单并关闭捕获表单。然后我希望主窗体出现在捕获图片的同一位置。要了解我正在尝试做的事情的要点,请在 Windows 上打开 Snipping Tool 并捕获一个片段。然后窗口将出现在拍摄图像的位置。
这是我用来执行此操作的当前代码:
Location = new Point(Cursor.Position.X - CaptureBox.Width - CapturePanel.Location.X - CaptureBox.Location.X - 8, Cursor.Position.Y - CaptureBox.Height - CapturePanel.Location.Y - CaptureBox.Location.Y - 30);
CapturePanel 包含存储图片的 CaptureBox 控件。我还从 X 位置取 8,从 te Y 位置取 30 来补偿表单的边框和标题栏,但唯一的问题是某些计算机将使用不同的窗口样式,这些数字会改变。
如果有一种方法可以用来抓取窗口的边框和标题宽度/高度,那就太好了。
编辑
对此的解决方案是:
Location = new Point(
Cursor.Position.X -
CaptureBox.Width -
CapturePanel.Location.X -
CaptureBox.Location.X -
SystemInformation.HorizontalResizeBorderThickness,
Cursor.Position.Y -
CaptureBox.Height -
CapturePanel.Location.Y -
CaptureBox.Location.Y -
SystemInformation.CaptionHeight -
SystemInformation.VerticalResizeBorderThickness
);
在 King King 向我指出 SystemInformation 的帮助下。