设计个窗口定位器
目的
当窗口显示后,它应该出现在什么位置?
我经常需要让窗口显示在:父窗口中心(可能是个弹窗),鼠标位置(可能是填写信息的窗口),或者屏幕右下角(可能是个通知框)
不需要对窗口的坐标进行显式指定,而只需指定大体的方位
锚点定义
一个有尺寸的参考对象被分为9个点,可以定义枚举分别为:TopLeft, TopCenter...

参考对象
参考对象有三个,分别为:
- 屏幕
- 父窗口
- 鼠标位置
目标对象
即需要显示的窗口
规则
先根据参考对象锚点、尺寸、位置、计算出定位点在屏幕上的位置
再根据目标对象锚点、尺寸匹配到具体位置

其他细节考虑
- 二次指定偏移
- 溢出屏幕钳制
- 任务栏方位对整体位置的影响
最后
这个思路来自于魔兽世界的UI设计模式(我不确定是不是这样的,因为我每次写的时候都毛不准)
浙公网安备 33010602011771号