版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学习目标学习目标掌握中点掌握中点BresenhamBresenham画线法的程序实现;画线法的程序实现;操作步骤操作步骤首先建立一个基于首先建立一个基于MFCMFC应用的工程应用的工程创建一个创建一个CP2CP2类用于存放顶点坐标类用于存放顶点坐标创建一个创建一个ClineCline类用于实现画线算法类用于实现画线算法本章小结本章小结创建创建MFC工程工程step 1step 1创建创建MFC工程工程step 2step 2创建创建MFC工程工程step 3step 3创建创建MFC工程工程step 4step 4创建创建MFC工程工程step 5step 5创建创建MFC工程工程step 6
2、step 6创建创建MFC工程工程step 7step 7创建创建MFC工程工程step 8step 8创建创建MFC工程工程step 9step 9创建创建MFC工程工程step 10step 10创建创建MFC工程工程工程完成后,解决方案资源管理器工程完成后,解决方案资源管理器创建创建MFC工程工程类视图类视图创建创建CP2类类Step 1 Step 1 类视图中,点击主类后,点击鼠标右键,点类视图中,点击主类后,点击鼠标右键,点击击“类类”创建创建CP2类类Step 2 Step 2 添加类:选择添加类:选择C+C+类,点击类,点击“添加添加”创建创建CP2类类Step 2 Step 2
3、 :类名取为:类名取为CP2,CP2,点击点击“完成完成”创建创建CP2类类Step 3 Step 3 :出现如图所示示意图:出现如图所示示意图 CP2CP2中需包含两个成员变量,中需包含两个成员变量,m_xm_x与与m_ym_y来表示点的来表示点的坐标,同时添加构造函数对这两个成员变量赋值坐标,同时添加构造函数对这两个成员变量赋值。创建创建CP2类类Step 4 Step 4 :添加成员变量,点击:添加成员变量,点击“添加变量添加变量”创建创建CP2类类Step 5 Step 5 :添加成员变量:添加成员变量m_xm_x创建创建CP2类类Step 6 Step 6 :类似操作添加成员变量:类
4、似操作添加成员变量m_ym_y创建创建CP2类类Step 7 Step 7 :添加带参数的构造函数:添加带参数的构造函数创建创建CP2类类Step 7 Step 7 :添加带参数的构造函数:添加带参数的构造函数, ,如图所示,点如图所示,点击击“完成完成”创建创建CP2类类Step 8 Step 8 :进入类:进入类CP2CP2的实现文件的实现文件P2.cppP2.cpp中。中。创建创建CP2类类Step 9 Step 9 :在构成函数:在构成函数CP2(double x,double y)CP2(double x,double y)中实现成员变量中实现成员变量m_xm_x与与m_ym_y的初
5、始化。的初始化。创建创建CLine类类 Cline类实现画直线的功能类实现画直线的功能成员变量:直线的起点坐标成员变量:直线的起点坐标CP2 m_P0 成员变量:直线的终点坐标成员变量:直线的终点坐标CP2 m_P1成员变量:画直线的颜色成员变量:画直线的颜色 COLORREF m_colorCOLORREF m_color成员函数:成员函数: void MoveTo(CDC void MoveTo(CDC * * pDC, CP2 P0) pDC, CP2 P0),其功能,其功能是定位到直线的起始点。是定位到直线的起始点。成员函数:成员函数: void LineTo(CDC void Lin
6、eTo(CDC * * pDC, CP2 P1) pDC, CP2 P1),其功能,其功能是利用是利用BresenhamBresenham算法画出起始点在算法画出起始点在m_P0,m_P0,终点在终点在m_P1m_P1的直的直线。线。创建创建CLine类类Step 1 Step 1 类视图中,点击主类后,点击鼠标右键,点类视图中,点击主类后,点击鼠标右键,点击击“类类”创建创建CLine类类Step 2 Step 2 :选中:选中C+C+类,单击类,单击“添加添加(A)(A)”按钮,按钮,创建创建CLine类类Step 3 Step 3 :输入类名:输入类名“CLineCLine”。创建创建C
7、Line类类Step 4 Step 4 :添加成员变量:添加成员变量, ,点击点击“添加变量(添加变量(B B)”创建创建CLine类类Step 5 Step 5 :添加成员变量:添加成员变量 CP2 m_P0,CP2 m_P0,点击点击“完成完成”创建创建CLine类类Step 6 Step 6 :类似操作,添加成员变量:类似操作,添加成员变量 CP2 m_P1,CP2 m_P1,点点击击“完成完成”创建创建CLine类类Step 7 Step 7 :类似操作,添加成员变量:类似操作,添加成员变量 COLORREF COLORREF m_color,m_color,在在“变量类型(变量类型(
8、V V)”中输入中输入COLORREFCOLORREF,点击,点击“完成完成”创建创建CLine类类Step 8 Step 8 :添加成员函数:添加成员函数, ,点击点击“添加函数(添加函数(U U)”创建创建CLine类类Step 9 Step 9 :成员函数:成员函数MoveTo,MoveTo,第一个参数类型第一个参数类型CDC CDC * *, ,第二第二个参数类型个参数类型CP2CP2,输入参数名后点击,输入参数名后点击“添加(添加(A A)”。创建创建CLine类类Step 10 Step 10 :完成成员函数:完成成员函数MoveToMoveTo的功能。在的功能。在Line.cpp
9、Line.cpp文文件中的件中的MoveToMoveTo函数中添加函数中添加 “m_P0=P0;m_P0=P0;”的语句,使成员变的语句,使成员变量量m_P0m_P0指向直线的起始点。指向直线的起始点。创建创建CLine类类Step 11 Step 11 :添加成员函数:添加成员函数, ,点击点击“添加函数(添加函数(U U)”创建创建CLine类类Step 12 Step 12 :成员函数:成员函数LineTo,LineTo,第一个参数类型第一个参数类型CDC CDC * *, ,第二第二个参数类型个参数类型CP2CP2,输入参数名后点击,输入参数名后点击“添加(添加(A A)”。创建创建C
10、Line类类Step 13 Step 13 :添加:添加 #include “math.h” #include “math.h” 和和 #defefine Round(x) floor(x)+05) #defefine Round(x) floor(x)+05) 用于取整。完善用于取整。完善成员函数成员函数LineToLineTo的功能。的功能。教材教材P92P92的程序的程序在在View中实现画线功能中实现画线功能在在CBresenhamLineView类中实现类中实现获取直线的两个端点坐标。获取直线的两个端点坐标。 创建两个成员变量创建两个成员变量 CP2 m_P0; CP2 m_P1CP
11、2 m_P0; CP2 m_P1来保存来保存直线的两个端点坐标。直线的两个端点坐标。 CBresenhamLineView中中实现画线功能。实现画线功能。在在View中实现画线功能中实现画线功能Step 1:Step 1: CBresenhamLineView类中添加成员变量类中添加成员变量CP2 m_P0。选中。选中CBresenhamLineView,单击右,单击右键键在在View中实现画线功能中实现画线功能Step 2:Step 2: CBresenhamLineView类中添加成员变量类中添加成员变量CP2 m_P0。在在View中实现画线功能中实现画线功能Step 3:Step 3:
12、 CBresenhamLineView类中添加成员变量类中添加成员变量CP2 m_P1。在在View中实现画线功能中实现画线功能Step 4:Step 4: CBresenhamLineView类中添加成员变量类中添加成员变量CRect m_rect。在在View中实现画线功能中实现画线功能Step 5:Step 5: 修改修改CBresenhamLineView类中的类中的OnDraw 函数,得到画图的区域。函数,得到画图的区域。在在View中实现画线功能中实现画线功能Step 6:Step 6:在在View中画线需要执行的操作步骤中画线需要执行的操作步骤 按下鼠标左键,产生按下鼠标左键,产
13、生WM_LButtonDown事件,确定直线事件,确定直线的起始点。的起始点。 按下鼠标左键后,拖动鼠标一段距离,就是直线的长度。按下鼠标左键后,拖动鼠标一段距离,就是直线的长度。 释放鼠标,释放鼠标, 产生产生WM_LButtonUp事件,确定直线的终点。事件,确定直线的终点。在在View中实现画线功能中实现画线功能Step 7:Step 7: 获取获取CBresenhamLineView类的鼠标左键类的鼠标左键按下的事件,按下的事件,在在View中实现画线功能中实现画线功能Step 9:Step 9: 在在CBresenhamLineView类的属性中的消类的属性中的消息项中,点击息项中,点击WM_LButtonDown在在View中实现画线功能中实现画线功能Step 10:Step 10:完成完成CBresenhamLineView类类WM_LButtonDown的事件处理。的事件处理。在在View中实现画线功能中实现画线功能S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论