如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
面向对象课程设计指导书--《面向对象程序设计》课程设计报告学号:20101003470班级序号:116101-21姓名:金豆指导老师:陈亮成绩:中国地质大学(武汉)信息工程学院信息工程系2010年7月实习题目一1、橡皮筋画线程序,要求:利用鼠标在视图上绘制线,能够设置线的颜色和宽度;能够用鼠标拾取绘制的某条线,被选中的线能够高亮显示,并且弹出对话框,输入线的属性保存起来;能够将绘制的线数据保存在Line.dat文本文件中;打开线数据文件Line.dat,可以显示出文件里面的线图形。【算法设计】(1)设计思想:首先自己定义一支画笔,通过对话框改变其宽度,颜色(RGB值).当点击划线按钮时开始划线,点击设置按钮能够改变线的各种属性,划线完成后点击拾取按钮,用鼠标左键点击你要选中的线条,可以发现选中的线条会变成黄色的,高亮度显示,然后弹出对话框,通过它课以改变这条线的属性,最后是文件管理按钮,里面包含有保存和打开两个选项,当你划线完成后点击保存所画的线条各个属性通过OnSave()函数就会保存在line.dat文件中.其中的拾取需要一个确定你选的点是不是在画的线条上,设计的算法为:选中的点到所画线条的两个端点的距离之和(A+B)是否等于线段的长度C,由于一次选中可能较小,于是可以让(A+B)-C在一个范围里变成一个扁的椭圆.重点就是这个选中算法.(2)设计表示:划线文件管理设置开始拾取保存打开点击开始划线否则不能执行此操作设置线条属性对选中的线条高亮显示并可以改变属性存线条属性打开线条【调试报告】菜单栏:点击开始,所画线条:点击设置按钮:宽度设置为110颜色改变为(255,0,0)后所画线条:点击拾取按钮所画线条高亮显示并弹出改变属性按钮:点击保存按钮:【附录】添加消息响应函数:voidCDrawlineView::OnLButtonDown(UINTnFlags,CPointpoint)鼠标左键点下响应voidCDrawlineView::OnLButtonUp(UINTnFlags,CPointpoint)鼠标左键弹起响应voidCDrawlineView::OnMouseMove(UINTnFlags,CPointpoint)鼠标移动响应创建画笔画笔的线性,颜色,宽度和划线功能的实现:CClientDCdc(this);CPenMypen;CPen*pOldPen;Mypen.CreatePen(PS_SOLID,width,RGB(red,green,blue));pOldPen=dc.SelectObject(&Mypen);dc.MoveTo(m_ptOrigin);dc.LineTo(point);dc.SelectObject(pOldPen);保存线条属性:CGraph*pGraph=newCGraph(m_ptOrigin,m_ptEnd,width,red,green,blue);m_ptrArray.Add(pGraph);新建一个指针型类对象保存各个属性。窗口重绘使得窗口放大后依然显示所画的图像在OnDraw()函数中实现:voidCDrawlineView::OnDraw(CDC*pDC){CDrawlineDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);for(inti=0;i<m_ptrArray.GetSize();i++){CClientDCdc(this);CPenMypen;CPen*pOldPen;还原划线时的画笔的属性值以便重新划线:Mypen.CreatePen(PS_SOLID,((CGraph*)m_ptrArray.GetAt(i))->width,RGB(((CGraph*)m_ptrArray.GetAt(i))->red,((CGraph*)m_ptrArray.GetAt(i))->green,((CGraph*)m_ptrArray.GetAt(i))->blue));pOldPen=dc.SelectObject(&Mypen);dc.MoveTo(((CGraph*)m_ptrArray.GetAt(i))->m_ptOrigin);dc.LineTo(((CGraph*)m_ptrArray.GetAt(i))->m_ptEnd);dc.SelectObject(pOldPen);}//TODO:adddrawcodefornative