操作指导—金刚石图案1.建MFC工程Test,选单文档。2.设置窗口最大化模式,并且标题栏显示文字为:“金刚石图案”。在BOOLCTestApp::InitInstance()中将m_pMainWnd-ShowWindow(SW_SHOW);改为m_pMainWnd-ShowWindow(SW_MAXIMIZE);//窗口最大化紧接着加上m_pMainWnd-SetWindowText(金刚石图案);//标题设置3.二维点类设计:点击类右键出现添加类,或在类向导中添加一个新类,在Name编辑框中输入类名CP2。选GenericClass类修改CP2的初始定义,添加double型变量成员x和y。修改后:classCP2{public:CP2();virtual~CP2();CP2(double,double);//加上doublex;//加上doubley;//加上};修改构造函数CP2::CP2(){this-x=0.0;this-y=0.0;}定义重载构造函数CP2::CP2(doublex0,doubley0){this-x=x0;this-y=y0;}4.输入对话框类的设计。在资源视图面板ResourceView中选Dialog右键选InsertDialog,删去取消按钮,改窗口为下图:双击此框,在弹出的框中加上Name:CinputDlg为输入对话框的控件映射数据成员。在建立类向导中选MemberVariables。对IDC_EDIT1映射变量名为m_n,int类型,限制Minimum为3,Maximum为50;对IDC_EDIT2映射变量名为m_r,double类型,限制Minimum为200.0,Maximum为320.0.OK退出设置EditBox框的初值.在CinputDlg的构造函数中改为m_n=30;m_r=300.0;见CinputDlg::CinputDlg(CWnd*pParent/*=NULL*/):CDialog(CinputDlg::IDD,pParent){//{{AFX_DATA_INIT(CinputDlg)m_n=30;m_r=300.0;//}}AFX_DATA_INIT}显示:设置EditBox框的初始状态为选中.在类向导中添加消息WM_SHOINDOW的响应函数,在最后加上voidCinputDlg::OnShowWindow(BOOLbShow,UINTnStatus){CDialog::OnShowWindow(bShow,nStatus);//TODO:AddyourmessagehandlercodehereGetDlgItem(IDC_EDIT1)-SetFocus();//获取编辑框焦点((CEdit*)GetDlgItem(IDC_EDIT1))-SetSel(0,-1);//选择编辑框控件内的全部文本}5.菜单设计:下拉菜单文件中的退出ID为ID_APP_EXIT绘图的金刚石ID为ID_APP_Diamond。提示为:绘制金刚石图案.帮助中的关于自己改.在VIEW类中添加”金刚石”子菜单命令响应函数.6.引入图标:在资源视图中选中Icon中双击IDR_MAINFRAME标识,打开应用程序默认图标并执行编辑中的清除.再引入所需的图标.用复制与粘贴到图标工具上,再对应相应的ID.7.对话框贴图:从资源视图中导入图片,导入时选所有文件.打开对话框去除不用的控件,加入图片控件,右键打开属性,类型改为位图,图像选中刚导入的.8.CTestView类的设计:CP2*P用于定义一维动态数组存储等分点,intN用于读入等分点个数,doubleR用于读入圆的半径,它们声明为保护数据成员.自定义公有的void成员函数Diamond(),菜单消息处理函数OnAppDiamond()在View.h头文件中类定义前加上#includeP2.h//包含二维点类头文件#includeInputDlg.h//包含输入对话框类头文件在View.cpp中加上#includestdafx.h#includeTest.h#includeTestDoc.h#includeTestView.h#defineROUND(a)int(a+0.5)//四舍五入#includecmath//数学头文件#definePI3.1415926//圆周率的宏定义9.加上绘制内容voidCTestView::Diamond()//绘制金刚石图案函数{P=newCP2[N];//动态分配内存CClientDCdc(this);//设置客户区设备上下文CRectRect;//定义矩形对象GetClientRect(&Rect);//获取客户区矩形范围doubletheta;//theta为圆的等分角theta=2*PI/N;for(inti=0;iN;i++)//计算各等分点坐标{P[i].x=R*cos(i*theta);P[i].y=R*sin(i*theta);}for(i=0;i=N-2;i++)//绘制金刚石图案的外层循环{for(intj=i+1;j=N-1;j++)//绘制金刚石图案的内层循环{dc.MoveTo(ROUND(P[i].x+Rect.right/2),ROUND(P[i].y+Rect.bottom/2));dc.LineTo(ROUND(P[j].x+Rect.right/2),ROUND(P[j].y+Rect.bottom/2));}}delete[]P;//动态内存释放}10.voidCTestView::OnAppDiamond()//金刚石菜单函数{//TODO:AddyourcommandhandlercodehereCInputDlgdlg;//定义输入对话框类对象if(dlg.DoModal()==IDOK)//调用输入对话框并判断是否单击OK按钮{N=dlg.m_n;//输入对话框类数据成员m_n赋给CTestView类数据成员NR=dlg.m_r;//输入对话框数据成员m_r赋给CTestView类数据成员R}elsereturn;RedrawWindow();//重绘窗口Diamond();//金刚石菜单调用绘制金刚石图案函数}