获取相对于整个屏幕的控件的位置?

soo*_*ise 41 c# controls location winforms

假设我有一个Control,它的位置是相对于它的父级.如果它嵌入很多次并且是主要形式的伟大曾孙,我如何确定它在我的整个屏幕上的位置,而不仅仅是它在直接父母中的位置?这是为了通过屏幕截图打印特定的控件(因为对于某些控件,DrawToBitmap无法正常工作).

SLa*_*aks 97

你正在寻找PointToScreen方法:

Point location = someControl.PointToScreen(Point.Empty);
Run Code Online (Sandbox Code Playgroud)

  • 请注意,PointToScreen采用_client area_坐标,因此在Form上使用此代码不会给出正确的结果. (3认同)
  • @rymdsmurf不确定我是否理解正确,但是如果你在`Form`上使用它(比如`myForm.PointToScreen`)并且你有正确的坐标(来自`control.Location`)它将为你提供正确的坐标屏幕. (3认同)
  • 请注意:确保您的屏幕缩放到 100% 以获得正确的值。我的是 125%,我得到了错误的值。 (2认同)
  • @pookie 您可以获得一个 Graphics 对象(Dim g As Graphics = CreateGraphics())并使用 (g.DpiX / 96) 来获取缩放因子。100% 为 1,150% 为 1.5。 (2认同)