持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第8天,点击查看活动详情
一、实验目的及要求
实验要求:
- 掌握Liang-Barskay裁剪算法裁剪金刚石图案的方法;
- 正确的放缩效果、平移效果;
- 良好的交互设计;
二、实验仪器设备与软件环境
Windows 7以上操作系统 Microsoft Visual Studio 2010
三、实验过程及实验结果分析
(包括实验原理、步骤、数据、图表、结果及分析。软件类实验应写出程序代码;硬件类实验画出电路原理图(或逻辑框图)、列出实验数据,并对实验结果进行分析)
目标:以鼠标位置为中心用梁友栋-Barsky算法裁剪,附加功能是将该区域内的图形方法或者缩小(点鼠标左键放大,点鼠标右键缩小。当点击次数超过规定次数时给予提示)。
主要实验步骤:
1 菜单:项目/添加类, 填入类名CP2,选择虚析构函数
2 P2.h如下:把CP2()和~CP2中的参数 void去掉
3 修改视图类CTestView类
(一)在CTestView.h前面添加
(二)CTestView.h声明8个成员函数、5个成员变量
运行并保存一个版本
(二)在CTestView.cpp中实现函数,
1前面添加:
2 构造函数
3裁剪测试函数ClipTest(函数头和函数体都要加)
4 裁剪函数 LBLineClip(函数头和函数体都要加)
5 放缩函数ZooX, ZooY
6 绘制金刚石图案Diamond(函数头和函数体都要加)
7绘制裁剪窗口函数 DrawRect函数头和函数体都要加
8 双缓冲函数DoubleBuffer(函数头和函数体都要加)
9 坐标转换函数Convert(函数头和函数体都要加)
10修改已经存在的OnDraw函数,添加DoubleBuffer(pDC)(将参数中pDC两侧的注释去掉)
此时运行会出现金刚石图案,但无法操作。保存一个版本.
四 添加消息函数,控制鼠标
1)类视图/CTestView/类向导
-
消息/双击WM_LBUTTONDOWN,编辑OnLButtonDown
-
编辑代码
运行,保存一个版本。此时没有放大镜显示
4) 同样方法 添加 右键消息函数 和 鼠标移动消息函数。
右键消息函数:OnRButtonDown
消息/双击WM_RBUTTONDOWN,编辑OnRButtonDown
代码:
鼠标移动消息还函数:OnMouseMove
消息/双击WM_MOUSEMOVE/OnMouseMove
代码:
运行保存一个版本,此时鼠标左键右键可以实现放大和缩小 5 同样打开CTestView类向导,消息中找到WM_CONTEXTMENU, 将对应的处理程序删掉。 可以去掉右键弹起时的快捷菜单
实验结果: