我在应用程序启动时恢复Window的坐标.在Good-old-Windows-Forms中我使用了System.Windows.Forms.Screen
集合.WPF世界中有类似的东西吗?
我也注意到PrimaryScreen*
,VirtualScreen*
参数System.Windows.SystemParameters
.然而,他们让我不知所措,因为在监视器尺寸不同的情况下,似乎无法检测Window是否在内边界.
System.Windows.Forms.Screen
在 WPF 中工作得非常好,所以我认为 WPF 的设计者认为用 WPF 特定版本替换它没有任何优势。
当然,你必须进行坐标变换。这是一个进行转换的简单类:
public class ScreenBoundsConverter
{
private Matrix _transform;
public ScreenBoundsConverter(Visual visual)
{
_transform =
PresentationSource.FromVisual(visual).CompositionTarget.TransformFromDevice;
}
public Rect ConvertBounds(Rectangle bounds)
{
var result = new Rect(bounds.X, bounds.Y, bounds.Width, bounds.Height);
result.Transform(_transform);
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
用法示例:
var converter = new ScreenBoundsConverter(this);
foreach(var screen in System.Windows.Forms.Screen.AllScreens)
{
Rect bounds = converter.ConvertBounds(screen.Bounds);
...
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2171 次 |
最近记录: |