有没有办法检查WinForm在屏幕上是否完全可见(例如,是否超出屏幕范围?)
我已经尝试过使用SystemInformation.VirtualScreen,只要虚拟屏幕是一个矩形就能很好地工作,但是一旦它不是(例如L形状的3个屏幕),SystemInformation.VirtualScreen将返回包含所有的最小矩形.可见像素(因此,虽然它在虚拟屏幕中,但L的右上角的窗口将不可见)
我试图实现这一点的原因是我希望我的程序在他们所在的最后位置打开它的子窗口,但如果用户更改设置,我不希望这些窗口不在视图中(例如从他的笔记本电脑上拔掉额外的屏幕)
笔记本电脑屏幕的顶部坏了,我无法查看1600x82矩形内的任何内容.
在Wayland/XWayland中是否可以转换虚拟屏幕,以便只使用我的显示器的可见区域?
我设法使用xrandr在X中破解了一个解决方案:
#!/bin/sh
xrandr --newmode "1600x818_60.00" 107.33 1600 1688 1856 2112 818 819 822 847 -HSync +Vsync
xrandr --addmode eDP1 1600x818_60.00
xrandr --output eDP1 --fb 1600x818 --panning 1600x818 --mode 1600x818_60.00
# Yes this is hacky, but it's necessary to work around xrandr weirdness
sleep 1
xrandr --fb 1600x818 --output eDP1 --mode 1600x900 --transform 1,0,0,0,1,-82,0,0,1
Run Code Online (Sandbox Code Playgroud)
但是,我希望能够在Wayland中做到这一点.
System.Windows.Forms.SystemInformation.VirtualScreen 是否有 WPF 版本?