扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
图形化用户界面
可以观察到Word中的对象(包括图片)可以改变大小,当用鼠标点击图片对象时,图片四个角和四个边的中点上会显示8个小点。这些小点我称为控制点。用鼠标拖拽这8个点可以动态的改变对象的大小。其实在很多类型的程序中可以碰到这8控制点,例如在VS.NET的窗体设计器中,当前的控制周围就有这8个控制点。关于如何实现这8个控制点也是有一套的。
控制点可以分为内控制点和外控制点两种类型,我们对这8个点进行从0到7的编号。当鼠标光标移动到这8个控制点上方时需要设置为不同的光标样式。
内控制点
┌─────────────────┐
│■0 1■ 2■│
│ │
│ │
│ │
│ │
│■7 3■│
│ │
│ │
│ │
│ │
│■6 5■ 4■│
└─────────────────┘
外控制点
■ ■ ■
┌────────────────┐
│0 1 2│
│ │
│ │
│ │
│ │
■│7 3│■
│ │
│ │
│ │
│ │
│6 5 4 │
└────────────────┘
■ ■ ■
控制点上鼠标光标如下:
西北-东南 SizeNWSE 南北 SizeNS 东北-西南 SizeNESW
■ ■ ■
┌────────────────┐
│0 1 2│
│ │
│ │
│ │
│ │
■│7 西-南 SizeWE 3│■ 西-南 SizeWE
│ │
│ │
│ │
│ │
│6 5 4 │
└────────────────┘
■ ■ ■
东北-西南 SizeNESW 南北 SizeNS 西北-东南 SizeNWSE
根据上图所示,已知主矩形,控制点的类型(是内控制点还是外控制点)和控制点的宽度可以计算出所有的控制点的位置。可以编一个例程,输入3个参数,主矩形区域的Rectangle结构体,是否是内控制点(不是内控制点就是外控制点)和控制点的宽度,该例程计算所有控制点的位置,然后返回一个包含8个Rectangle的数组,该数组就是0到7号的控制矩形的位置和大小。
TextObject对象显示后就应该知道自己在视图区域中的位置,当它相应鼠标移动消息时,就可以根据鼠标光标位置和8个控制矩形进行比较,若鼠标光标在某个控制矩形中时就要通知文本编辑器改变鼠标光标的样式。
一般的控制点被画成一个矩形方框,控制点也被画成两种类型,一种是填充色为深色(蓝色或黑色)和白色边框,另一种是深色边框并填充白色。可以观察VS.NET窗体设计器,可以在设计器中选择多个控制,其中有一个控件的控制点为填充色为蓝色和白色边框的,该控制为当前控件。而其他选择的控件的控制点为蓝色边框并填充白色,这些控件为选择控件。在文本编辑器中没有这种情况,因此在此可以使用内控制点方式,控制点用黑色填充,边框白色。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者