摘 要 近几年,随着GIS、RSP等图形图像软件的发展,在影像局部显示、裁剪等方面都要选取范围或对图形的操作。根据这些需求,设计并实现了一个矩形操作类,实现了矩形的上下左右等八个方向的拖拉、反转、移动等操作功能以及实时显示当前矩形坐标。
关键词 矩形图形;类
1 引言
近年来,随着GIS、RSP等图形图像设计软件的发展,在影像局部显示,裁剪局部影像等选取局部影像的操作大量使用到了对矩形图形的操作,比如国外的Photoshop、PCI、国产大型遥感处理软件MapGis_RSP等。
2 矩形操作类
面向对象技术的风格是在结构化程序设计概念和数据抽象的基础上建立起来的,面向对象的程序是围绕初操作数据而设计的,面向对象的程序设计把数据与操作结合起来。
在矩形操作时,包括矩形的上、下、左、右、左上、左下、右上和右下八个方向的拖拽与对矩形移动的这些操作。这些都是对矩形图形的操作过程,而在这些操作过程中也是对矩形的定位,对矩形坐标的操作。矩形坐标可以用一个CRect类型的变量进行对矩形的位置记录。在这些操作中,也是对该CRect类型的变量的操作。因此,对矩形的拉拽与移动这些操作与对该CRect类型的变量的操作都可以抽象到一个类中。把这些对矩形操作过程与矩形坐标的变量都封装到类CRectGraph中。
用面向对象的方法来实现对矩形操作过程的抽象,既是对该矩形操作的封装,有利于维护;又能够很方便的地去应用,也可以很好地扩展。
3 原理及流程
1.实现原理
在矩形操作类中,为了实现上、下、左、右等八个方向的拖拽与移动矩形的操作,必须先根据矩形的坐标画出矩形。而每次拖拽或移动都要根据新的坐标画一个矩形,这样就会出现无数个矩形,视图中会乱如麻,达不到拖拽与移动的效果。如果每次拖拽或移动要根据新计算出来的坐标画一个新的矩形,而不看原擦去的矩形,则就达到了拖拽与移动的效果。在CRectGraph类中,根据异或类型的画笔,再根据计算出来的新矩形坐标画出异或矩形时,先重画一次原异或矩形,从而达到擦去原矩形的效果。在最后鼠标弹起时,再画一次异或矩形擦去异或类型的矩形,重新画一实体类型的矩形,实现矩形的操作。
|