ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:424.60KB ,
资源ID:12889592      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12889592.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(vc可视化实验2.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

vc可视化实验2.docx

1、vc可视化实验2实验二:MFC曲线绘制实验学号: 2011329700214 姓名:周咪咪 班级:11数媒(2)班一、 实验目的1.了解Windows图形处理的基本原理。2.掌握Windows图形和文本输出。二、 实验内容1.MFC曲线绘制实现三、 实验步骤及源代码1.创建MFC 应用程序框架打开VC6.0,使用MFC AppWizardexe向导创建MFC应用程序sy2框架,选择单文档应用程序,其它默认。 2.添加菜单项选择项目工作区的资源视图,展开menu文件夹,双击菜单资源IDR_MAINFRAME,打开菜单编辑器。在主菜单【帮助】的后面添加3 个菜单项【曲线】、【线宽】和【颜色】,并分

2、别给它们添加子菜单(设置其Caption(菜单项名称)、ID、Prompt(提示))。3.创建快捷菜单(1)在ResourceView菜单中右击Menu,选择Insert Menu,将新创建的资源命名为IDR_MENU_POP。然后按照要求为快捷菜单依次添加菜单项,将菜单项设置到对应的ID。(2)添加代码在sy2_1View.h中CSy2_1View 类内部添加如下代码,声明快捷菜单中对应的变量。CMenu m_PopMenu; /Pop_up快捷菜单在sy2_1View.cpp中添加如下代码:CSy2_1View:CSy2_1View() / TODO: add construction c

3、ode herem_PopMenu.LoadMenu(IDR_MENU_POP);/创建并加载菜单资源CSy2_1View:CSy2_1View()m_PopMenu.DestroyMenu();/释放菜单资源在ResourseView中的CSy2_1View选择WM_RBUTTONDOWN添加消息处理函数OnRButtonDown*().void CSy2_1View:OnRButtonDown(UINT nFlags, CPoint point) /新加消息处理函数 / TODO: Add your message handler code here and/or call default

4、 CMenu* m_pPop = NULL;/用m_pPop这个指针去获取m_Popmenu这个菜单 m_pPop=m_PopMenu.GetSubMenu(0); this-ClientToScreen(&point);/将坐标由客户坐标转化为屏幕坐标 m_pPop-TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);/显示菜单 CView:OnRButtonDown(nFlags, point);编译运行程序,结果如下:4.创建工具栏(1)首先单击ResourceView,选择Toolbar,然后单击鼠标右键,在弹出的快捷菜单中选择Inse

5、rt Toolbar,将新加入的工具条资源重新命名为IDR_TOOLBAR_NEW。绘制4个按钮,并设置相应ID。(2)添加代码在MainFrm,h中添加代码,声明一个CToolBar变量:CToolBar m_wndToolBarNew;/声明CToolBar变量,新建工具条在Main.Frm.cpp文件的CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct)函数中添加代码:if (!m_wndToolBarNew.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP/先用Cr

6、eateEx函数创建一个工具条 | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) | !m_wndToolBarNew.LoadToolBar(IDR_TOOLBAR_NEW)/通过LoadToolBar函数将创建的工具条与指定资源(新建的工具条资源)绑定 TRACE0(Failed to create toolbarn); return -1; / fail to create 编译运行程序,结果如下:5.添加成员变量及成员函数(1)选择项目工作区中的类视图,右击CSy5View,光标移至添加,分别添加成员变量及

7、成员函数。 (2)在构造函数中初始化成员变量:Csy2View:Csy2View ()m_typ=0; /初始时窗口中不显示曲线m_col=RGB(0,0,0); /颜色初始为黑色m_wid=1; /线宽初始为1m_able=0; /初始时除“正弦”和“余弦”菜单项外,新增的其他菜单项均/为不可用(3)添加成员函数代码打开 sy2View.h 文件,在类的定义前面添加代码:const double PI=3.1416;打开 sy2View.cpp 文件,添加如下文件包含代码:#include math.h#include MainFrm.h为上表中各成员函数添加代码:double Csy25V

8、iew:calsin(int x)double y;y=sin(x*PI/180); /计算正弦return y;double Csy2View:calcos(int x)double y;y=cos(x*PI/180); /计算余弦return y;void Csy2View:drawline(CDC* pDC,int x1, int y1, int x2, int y2)pDC-MoveTo(x1,y1);pDC-LineTo(x2,y2);void Csy2View:drawaxis(CDC *pDC)/坐标函数CString str;CFont myfont,*oldfont;myfo

9、nt.CreatePointFont(80,Arial,pDC); /定义坐标刻度字体oldfont=pDC-SelectObject(&myfont);drawline(pDC,50,10,50,290); /绘制Y 轴drawline(pDC,45,150,780,150); /绘制X 轴for(int i=50;iTextOut(i,155,str); /输出X 轴上刻度值for(i=0;iTextOut(15,45+20*i,str);else pDC-TextOut(15,45+20*i,0);pDC-SelectObject(oldfont);myfont.DeleteObject

10、();void Csy2View:drawcurve(CDC* pDC)drawaxis(pDC); /调用成员函数绘制坐标系CPoint point750;CPen mypen,*oldpen;mypen.CreatePen(PS_SOLID,m_wid,m_col); /创建实线画笔、线宽及颜/色由参数m_wid 和m_col 确定oldpen=pDC-SelectObject(&mypen);for(int i=0;i722;i+)pointi.x=i+50;if(m_typ=1) /根据参数m_typ 的值确定曲线类型pointi.y=(int)(150-calsin(i)*100);

11、else if(m_typ=2)pointi.y=(int)(150-calcos(i)*100);for(i=0;iSelectObject(oldpen);mypen.DeleteObject();6.建立消息映射(1)分别为菜单项【正弦】、【余弦】、【线宽2】、【线宽3】、【红色】和【蓝色】添加COMMAND 及UPDATE_COMMAND_UI 消息处理函数。(2)添加代码在消息处理函数中添加如下代码:void Csy2View:OnSin()m_typ=1; /选择正弦曲线m_able=1; /不可用菜单项变为可用Invalidate(); /更新视窗void Csy2View:On

12、Cos()m_typ=2;m_able=1;Invalidate();void Csy2View:OnColr()m_col=RGB(255,0,0); /选择红色Invalidate();void Csy2View:OnColb()m_col=RGB(0,0,255);Invalidate();void CSy5View:OnWidsp2()m_wid=2; /设置线宽为2Invalidate();void Csy2View:OnWidsp3()m_wid=3;Invalidate();void Csy2View:OnUpdateColb(CCmdUI* pCmdUI)pCmdUI-Enab

13、le(m_able); /“红色”菜单项变为可用if(m_col=RGB(0,0,255)pCmdUI-SetCheck(true); /“红色”菜单项加标记elsepCmdUI-SetCheck(false);void CSy5View:OnUpdateColr(CCmdUI* pCmdUI)pCmdUI-Enable(m_able);if(m_col=RGB(255,0,0)pCmdUI-SetCheck(true);elsepCmdUI-SetCheck(false);void Csy2View:OnUpdateWidsp2(CCmdUI* pCmdUI)pCmdUI-Enable(m_

14、able);if(m_wid=2)pCmdUI-SetCheck(true);elsepCmdUI-SetCheck(false);void Csy2View:OnUpdateWidsp3(CCmdUI* pCmdUI)pCmdUI-Enable(m_able);if(m_wid=3)pCmdUI-SetCheck(true);elsepCmdUI-SetCheck(false);7.把drawcurve(pDC)添加到OnDraw(CDC* pDC)函数中实现坐标的绘制。void CSy2View:OnDraw(CDC* pDC) CSy2Doc* pDoc = GetDocument();

15、 ASSERT_VALID(pDoc); / TODO: add draw code for native data here drawcurve(pDC);/将drawcurve函数添加到Ondraw函数中,Ondraw是初始化画图8.添加状态栏操作代码(1)打开 MainFrm.cpp 文件,将系统默认的状态栏对象m_wndStatusBar 的访问类型改为Public。(2)在状态栏静态数组中添加ID_INDICATOR_PROMPT,并在字符串编辑器中设置其属性,手工建立ID_INDICATOR_PROMPT 的UPDATE_COMMAND_UI 消息映射。(3)首先,选择项目工作区的

16、ClassView 视图,双击CSy5View 类,打开其头文件Sy5View.h,在消息处理函数的声明宏中添加代码。afx_msg void OnUpdatePrompt(CCmdUI* pCmdUI);(4)然后,打开 Sy5View.cpp 文件,在其消息映射表中添加代码。ON_UPDATE_COMMAND_UI(ID_INDICATOR_PROMPT, OnUpdatePrompt);(5)最后,在 Sy5View.cpp 文件中给消息处理函数OnUpdatePrompt( )添加代码。 void CSy5View:OnUpdatePrompt(CCmdUI* pCmdUI)CMain

17、Frame *pMainFrame=(CMainFrame*)AfxGetMainWnd();CStatusBar *pStatusBar=&pMainFrame-m_wndStatusBar;/获取状态栏指针CString str,str1,str2,str3;str2=宽1,;str3=黑色;str1=(m_typ=1)?正弦,:余弦,;if(m_wid=2) /以下代码根据用户选择确定提示信息str2=宽2,;else if(m_wid=3)str2=宽3,;if(m_col=RGB(255,0,0)str3=红色;else if(m_col=RGB(0,0,255)str3=蓝色;st

18、r=str1+str2+str3;if(m_able=0) str=选择曲线类型; /初始时状态栏中提示信息pStatusBar-SetPaneText(1,str); /显示提示信息四、 运行结果及分析五、实验心得这次实验过程较多,老师给的实验步骤较具体。在此次实验中,了解到了MFC中菜单资源的使用,快捷菜单的创建及使用,工具条资源的创建及使用和字符串资源的使用。实验过程中,在快捷菜单的实现中花费的时间较多。不知道是程序原因还是软件自身的问题,实验中预编译若在老师报告中的位置将报错无法实现正常运行,需要改变其位置方能实现。在实验操作过程中,对于函数的使用及资源的使用仍有较大问题,希望在接下来的学习中能够熟练掌握。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1