版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计科2021级VC++课程设计实验报告题目:基于MFC的模拟时钟班级:计科1104班学号:1108030429姓名:张宝龙日期:2021/1/7课程设计实验报告1、题目:基于MFC的模拟时钟2、编程要点:制作时钟的过程中,首先给时钟创建一个基类CClockElement,还需要派生类CClockBackground,CClockHourHand,CClockMinHand,CClockSecHand分别控制时钟的背景,时钟的时针,分针,秒针。3、实现过程:工程、风格、控件与变量表本时钟是基本对话框的时钟,界面简约,便于使用。控件控件名控件类型Clock静态文本变量表变量名类型m_crMainCOLORREFm_crOtherCOLORREFm_tmCurCTimem_rcRegionCRectm_nRadiusintm_clockBKCClockBackgroundm_clockHourCClockHourHandm_clockMinCClockMinHandm_clockSecCClockSecHandm_rcClientCRectm_ClockCClockEX主要功能程序代码CClockBackground::CClockBackground(){//为时钟背景定义默认的颜色设置 m_crMain=RGB(0,0,255); m_crOther=RGB(0,255,0);}voidCClockBackground::Draw(CDC*pDC){ //设置准备环境 CPenpenMain(PS_SOLID,1,m_crMain),penOther(PS_SOLID,1,m_crOther); CBrushbrMain(m_crMain),brOther(m_crOther); CPen*pOldPen=pDC->SelectObject(&penOther); CBrush*pOldBrush=pDC->SelectObject(&brMain); CPointptCenter=m_rcRegion.CenterPoint(); intnRadius=m_nRadius-8; for(inti=0;i<60;i++) { CPointptEnd=ptCenter; ptEnd.Offset((int)(nRadius*sin(2*PI*(i%60)/60)),(int)(-nRadius*cos(2*PI*(i%60)/60))); CRectrcDot(-2,-2,2,2); rcDot.OffsetRect(ptEnd); pDC->Ellipse(rcDot); } //绘制12个小方框,表示12个正点 pDC->SelectObject(&penMain); pOldBrush=pDC->SelectObject(&brOther); for(i=0;i<12;i++) { CPointptEnd=ptCenter; doublefRadian=2*PI*(i%12)/12; ptEnd.Offset((int)(nRadius*sin(fRadian)),(int)(-nRadius*cos(fRadian))); CRectrcDot(-3,-3,3,3); rcDot.OffsetRect(ptEnd); pDC->Rectangle(rcDot); } //huanyuan设备环境 pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush);}CClockHourHand::CClockHourHand(){//定义默认颜色 m_crMain=RGB(0,0,128); m_crOther=RGB(128,128,0);}voidCClockHourHand::Draw(CDC*pDC){ //设置准备环境 CPenpenMain(PS_SOLID,1,m_crMain),penOther(PS_SOLID,1,m_crOther); CBrushbrMain(m_crMain),brOther(m_crOther); CPen*pOldPen=pDC->SelectObject(&penOther); CBrush*pOldBrush=pDC->SelectObject(&brMain); //确定当前指针的弧度 intnTime=(m_tmCur.GetHour()%12)*3600; nTime+=m_tmCur.GetMinute()*60; nTime+=m_tmCur.GetSecond(); doublefRadian=2*PI*nTime/3600/12; //确定绘制菱形指针所需的四个角的坐标 CPointptDiamond[4]; for(inti=0;i<4;i++) { ptDiamond[i]=m_rcRegion.CenterPoint(); } intnRadius=m_nRadius/2; ptDiamond[0].Offset((int)(nRadius*sin(fRadian)),(int)(-nRadius*cos(fRadian))); fRadian+=0.5*PI; nRadius=m_nRadius/20; ptDiamond[1].Offset((int)(nRadius*sin(fRadian)),(int)(-nRadius*cos(fRadian))); fRadian+=0.5*PI; nRadius=m_nRadius/10; ptDiamond[2].Offset((int)(nRadius*sin(fRadian)),(int)(-nRadius*cos(fRadian))); fRadian+=0.5*PI; nRadius=m_nRadius/20; ptDiamond[3].Offset((int)(nRadius*sin(fRadian)),(int)(-nRadius*cos(fRadian))); //绘制菱形时钟 pDC->Polygon(ptDiamond,4); //huanyuan设备环境 pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush);}CClockMinHand::CClockMinHand(){ //定义默认颜色 m_crMain=RGB(0,255,100); m_crOther=RGB(128,128,0);}voidCClockMinHand::Draw(CDC*pDC){ //设置准备环境 CPenpenMain(PS_SOLID,1,m_crMain),penOther(PS_SOLID,1,m_crOther); CBrushbrMain(m_crMain),brOther(m_crOther); CPen*pOldPen=pDC->SelectObject(&penOther); CBrush*pOldBrush=pDC->SelectObject(&brMain); //确定分针所在位置的弧度 intnTime=m_tmCur.GetMinute()*60; nTime+=m_tmCur.GetSecond(); doublefRadian=2*PI*nTime/3600; //确定绘制菱形指针所需的四个角的坐标 CPointptDiamond[4]; for(inti=0;i<4;i++) { ptDiamond[i]=m_rcRegion.CenterPoint(); } intnRadius=m_nRadius/4; ptDiamond[0].Offset((int)(nRadius*sin(fRadian)),(int)(-nRadius*cos(fRadian))); fRadian+=0.5*PI; nRadius=m_nRadius/20; ptDiamond[1].Offset((int)(nRadius*sin(fRadian)),(int)(-nRadius*cos(fRadian))); fRadian+=0.5*PI; nRadius=m_nRadius/10; ptDiamond[2].Offset((int)(nRadius*sin(fRadian)),(int)(-nRadius*cos(fRadian))); fRadian+=0.5*PI; nRadius=m_nRadius/20; ptDiamond[3].Offset((int)(nRadius*sin(fRadian)),(int)(-nRadius*cos(fRadian))); //绘制菱形时钟 pDC->Polygon(ptDiamond,4); //huanyuan设备环境 pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush);}CClockSecHand::CClockSecHand(){ //设定秒针的默认颜色m_crMain=RGB(0,200,200); m_crOther=RGB(0,200,200);}voidCClockSecHand::Draw(CDC*pDC){ intnTime=m_tmCur.GetSecond(); CPointptStart=m_rcRegion.CenterPoint(); CPointptEnd=ptStart; intnRadius=m_nRadius-10; ptEnd.Offset((int)(nRadius*sin(2*PI*nTime/60)),(int)(-nRadius*cos(2*PI*nTime/60))); CPenpenMain(PS_SOLID,1,m_crMain); CPen*pOldPen=pDC->SelectObject(&penMain); pDC->MoveTo(ptStart); pDC->LineTo(ptEnd); pDC->SelectObject(pOldPen);}voidCClockEX::OnTimer(UINTnIDEvent){ Invalidate(FALSE); CStatic::OnTimer(nIDEvent);}voidCClockEX::OnSize(UINTnType,intcx,intcy){ CStatic::OnSize(nType,cx,cy); GetClientRect(m_rcClient);//获取当前客户区 m_clockBK.SetRegion(m_rcClient); m_clockHour.SetRegion(m_rcClient); m_clockMin.SetRegion(m_rcClient); m_clockSec.SetRegion(m_rcClient);}voidCClockEX::OnPaint(){ CPaintDCdc(this);//devicecontextforpainting //实现双缓冲绘图---防止屏幕闪烁 CDCdcMem; dcMem.CreateCompatibleDC(&dc); CBitmapbmp; bmp.CreateCompatibleBitmap(&dc,m_rcClient.Width(),m_rcClient.Height()); dcMem.SelectObject(&bmp); DrawClock(&dcMem);//绘制时钟 dc.BitBlt(0,0,m_rcClient.Width(),m_rcClient.Height(),&dcMem,0,0,SRCCOPY);}voidCClockEX::PreSubclassWindow(){ GetClientRect(m_rcClient);//获取当前客户区 m_clockBK.SetRegion(m_rcClient); m_clockHour.SetRegion(m_rcClient); m_clockMin.SetRegion(m_rcClient); m_clockSec.SetRegion(m_rcClient); SetTimer(1,100,NULL); CStatic::PreSubclassWindow();}voidCClockEX::DrawClock(CDC*pDC){ CTimetmCur=CTime::GetCurrentTime(); m_clockBK.SetTime(tmCur); m_clockHour.SetTime(tmCur); m_clockMin.SetTime(tmCur); m_clockSec.SetTime(tmCur); m_clockBK.Draw(pDC); m_clockHour.Draw(pDC); m_clockMin.Draw(pDC); m_clockSec.Draw(pDC);}CClockElement::CClockElement(){m_nRadius=0; m_crMain=RGB(255,0,0); m_crOther=RGB(128,128,0);}voidCClockElement::SetRegion(LPRECTlprcRect){m_rcRegion=lprcRect;m_nRadius=m_rcRegion.Width()/2;if(m_rcRegion.Width()>m_rcRegion.Height()){m_nRadius=m_rcRegion.Height()/2;}}voidCClockElement::SetTime(constCTime&tmCur){ m_tmCur=tmCur;}voidCClockElement::SetColor(COLORREFcrMain,COLORREFcrOther){m_crMain=crMain;m_crOther=crOther;}4、运行效果展示:5、自我总结:该小程序是基于MFC中的对话框的,主要针对画笔和画刷的用法,没有涉及连接数据库和算法,完全是为了本学期所学知识的运用,由于时间紧,所以没能深入的探索MFC的奥妙,不过通过本次设计,我对老师课堂上所讲述的关于该类型的知识,有了进一步的了解和掌握,初步的熟悉了画笔和画刷的简单用法,还巩固了MFC类中的基本操作,例如,添加新类,新变量,创建新的对话框,添加控件等方面的知识。程序设计过程中最大的困难就是对于MFC中的函数了解不够,不能融会贯通的拿来运用,通过百度搜索引擎的查询给自己提供了很大的帮助。通过此次课程设计使我深刻了解到了日常知识积累的重要性。同时通过此次课程设计,对于设计可视化窗口的程序有了更好的了解,也激发了自己对可视化窗口程序设计的兴趣。而且通过这次课程设计,使自己对课本上的东西有了更好的掌握,对课程内容的了解更加深刻,受益匪浅。通过本次设计我更加懂得了想要熟练掌握编程语言,就需要我们勤于练习。
论大学生写作能力写作能力是对自己所积累的信息进行选择、提取、加工、改造并将之形成为书面文字的能力。积累是写作的基础,积累越厚实,写作就越有基础,文章就能根深叶茂开奇葩。没有积累,胸无点墨,怎么也不会写出作文来的。写作能力是每个大学生必须具备的能力。从目前高校整体情况上看,大学生的写作能力较为欠缺。一、大学生应用文写作能力的定义那么,大学生的写作能力究竟是指什么呢?叶圣陶先生曾经说过,“大学毕业生不一定能写小说诗歌,但是一定要写工作和生活中实用的文章,而且非写得既通顺又扎实不可。”对于大学生的写作能力应包含什么,可能有多种理解,但从叶圣陶先生的谈话中,我认为:大学生写作能力应包括应用写作能力和文学写作能力,而前者是必须的,后者是“不一定”要具备,能具备则更好。众所周知,对于大学生来说,是要写毕业论文的,我认为写作论文的能力可以包含在应用写作能力之中。大学生写作能力的体现,也往往是在撰写毕业论文中集中体现出来的。本科毕业论文无论是对于学生个人还是对于院系和学校来说,都是十分重要的。如何提高本科毕业论文的质量和水平,就成为教育行政部门和高校都很重视的一个重要课题。如何提高大学生的写作能力的问题必须得到社会的广泛关注,并且提出对策去实施解决。二、造成大学生应用文写作困境的原因:(一)大学写作课开设结构不合理。就目前中国多数高校的学科设置来看,除了中文专业会系统开设写作的系列课程外,其他专业的学生都只开设了普及性的《大学语文》课。学生写作能力的提高是一项艰巨复杂的任务,而我们的课程设置仅把这一任务交给了大学语文教师,可大学语文教师既要在有限课时时间内普及相关经典名著知识,又要适度提高学生的鉴赏能力,且要教会学生写作规律并提高写作能力,任务之重实难完成。(二)对实用写作的普遍性不重视。“大学语文”教育已经被严重地“边缘化”。目前对中国语文的态度淡漠,而是呈现出全民学英语的大好势头。中小学如此,大学更是如此。对我们的母语中国语文,在大学反而被漠视,没有相关的课程的设置,没有系统的学习实践训练。这其实是国人的一种偏见。应用写作有它自身的规律和方法。一个人学问很大,会写小说、诗歌、戏剧等,但如果不晓得应用文写作的特点和方法,他就写不好应用文。(三)部分大学生学习态度不端正。很多非中文专业的大学生对写作的学习和训练都只是集中在《大学语文》这一门课上,大部分学生只愿意被动地接受大学语文老师所讲授的文学经典故事,而对于需要学生动手动脑去写的作文,却是尽可能应付差事,这样势必不能让大学生的写作水平有所提高。(四)教师的实践性教学不强。学生写作能力的提高是一项艰巨复杂的任务,但在教学中有不少教师过多注重理论知识,实践性教学环节却往往被忽视。理论讲了一大堆,但是实践却几乎没有,训练也少得可怜。阅读与写作都需要很强的实践操作,学习理论固然必不可少,但是阅读方法和写作技巧的掌握才是最重要的。由于以上的原因,我们的大学生的写作水平着实令人堪忧,那么如何走出这一困境,笔者提出一些建议,希望能对大学生写作水平的提高有所帮助。三、提高大学生应用写作能力的对策(一)把《应用写作》课设置为大学生的必修课。在中国的每一所大学,《应用写作》应该成为大学生的必修课。因为在这个被某些人形容为实用主义、功利主义甚嚣尘上的时代,也是个人生存竞争最激烈的时代,人们比任何时代都更需要学会写作实用性的文章,比如职场竞争中的求职信,生活中的财经文书、法律文书等,以提高个人的生存竞争能力。(二)端正大学生的学习态度。首先,要让大学生充分认识到实用写作课的重要性,这门课关乎到他人生的每一个方
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医学美容导论相关试题与答案展示
- 2026年公务员遴选笔试案例分析模拟题及答案
- 医疗翻译检验题目及答案示例
- 2026年消防应急处置考试题库及答案
- 2026年物价执法检查人员价格认定知识试题及答案
- 2026年退役军人服务中心招聘真题(附答案)
- 2026年税务师涉税服务实务考试题库及答案
- 2026年设备安装电气施工员考试(专业基础知识)仿真试题及答案
- 2026年山东职业病诊断医师资格认定考核基础理论及法律法规强化练习题及答案
- 2026年国防科技创新与产业发展模拟试卷
- 2026年新教师班级管理入门培训课件
- 2026年北京市海淀区教育系统事业编人员招聘笔试参考试题及答案详解
- 2026年高校辅导员面试题(附答案)
- 2026年消防安全知识考试试卷(附答案)
- 工业安全防护用品使用课件
- 2026年教师师德师风考试题及答案
- 长期照护师技能实操考核试卷含答案
- 2026秋小学新版苏教版数学六年级上册教学设计(附目录)适用于新课标
- 2026年高考广西卷物理高考真题(解析版)
- 北师大版二年级数学上册重点难点计划
- 配电箱日常维护检查手册
评论
0/150
提交评论