科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件如何用C#编写文本编辑器(5)

如何用C#编写文本编辑器(5)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

可以观察到Word中的对象(包括图片)可以改变大小,当用鼠标点击图片对象时,图片四个角和四个边的中点上会显示8个小点。

来源:soft6 2008年5月16日

关键字: 编辑器 文本 C# Windows

  • 评论
  • 分享微博
  • 分享邮件

图形化用户界面

可以观察到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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章