我决定通过在 Visual Studio 2010 中编写一个音乐播放器来自学 C#。我选择了 WPF,因为据我所知,它听起来像是一个很好的皮肤基础。
我想对我的窗口进行编程,使其具有以下行为:如果窗口到达屏幕边缘(10 像素左右),它将捕捉到屏幕边缘。解决这个问题的最佳方法是什么?
嗯,有几个方面您需要解决。首先收到边缘接近屏幕的通知:
- 获取窗口大小发生变化的通知。这个很简单 - 只需使用Window.SizeChanged event.
- 获取窗口位置发生变化的通知。这个有点棘手,我不知道如何实现它,可能需要 P/Invoke 到 Win32 API。
然后,如果窗口边缘接近屏幕边缘,则有一个待办事项列表需要计算。
是否有多个监视器以及窗口是否仅包含在监视器内。这个答案将帮助您获取显示器信息。
处理折边动作。为此,需要一些矩形算术杂技。然后你要么设置Window.Top, Window.Left, Window.Height or Window.Width.
您将需要每个边的条件代码,但它看起来像这样:
void SnapWindow(Window window, Size monitorSize) {
if (window.Left < c_SnapThreshold && window.Left > 0)
window.Left = 0;
if (window.Left + window.Width > (monitorSize.Width - SnapThreshold) && window.Left + window.Width < monitorSize.Width)
window.Width = monitorSize.Width - window.Left; //docks the right edge
//..etc
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)