设计个窗口定位器

目的

当窗口显示后,它应该出现在什么位置?
我经常需要让窗口显示在:父窗口中心(可能是个弹窗),鼠标位置(可能是填写信息的窗口),或者屏幕右下角(可能是个通知框)
不需要对窗口的坐标进行显式指定,而只需指定大体的方位

锚点定义

一个有尺寸的参考对象被分为9个点,可以定义枚举分别为:TopLeft, TopCenter...

参考对象

参考对象有三个,分别为:

  • 屏幕
  • 父窗口
  • 鼠标位置

目标对象

即需要显示的窗口

规则

先根据参考对象锚点、尺寸、位置、计算出定位点在屏幕上的位置
再根据目标对象锚点、尺寸匹配到具体位置

其他细节考虑

  • 二次指定偏移
  • 溢出屏幕钳制
  • 任务栏方位对整体位置的影响

最后

这个思路来自于魔兽世界的UI设计模式(我不确定是不是这样的,因为我每次写的时候都毛不准)

posted @   trykle  阅读(69)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示