资源描述:
《混沌上机实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、混沌上机实验报告学院:信息学院课程名称:混沌学生姓名:许亮亮学号:110644051341实验一一、上机题目:在VC中自制调色板二、上机目的与要求1.熟悉一种编程语言环境及相关图形功能,能够灵活使用画笔,画刷等绘图工具。2.利用相关编程语言的图形功能,制作20色以上调色板。3.理解平面与屏幕的对应关系,掌握吸引子的构造原理与色带的制作方法,为下一个实验做准备工作。三、思路及步骤1.在MFC中,创建一个对话框窗口。在主窗体中添加一个textbox控件,作为调色板的产生区域。在其属性中的样式里,将“凹陷”和“边框”选上。412.为了使调色板的长宽可变,在text区域的右部添加两个编辑
2、框,分别控制产生色块的行列数量。在ClassWizard里为其添加成员变量,变量名分别为m_length和m_width,并设置变量值区域,长在1和7之间,宽在1和5之间。另外,添加一个控制时间间隔的编辑框,命名为m_elapse,以毫秒为单位。类型均为int。3.添加两个按钮,“绘图”和“退出”。界面效果如下。4.为绘图按钮添加消息映射函数。在text的区域绘制一个矩形,坐标为(15,615),(20,425),用白色画刷填充。产生的每个色块为边长为80单位的正方形,行列数量由输入的m_length和m_width决定。每产生一个,调用Sleep(m_elpase)函数,等待m
3、_elpase个间隔后再产生下一个。此调色板的颜色全部由随机数控制,即用random()函数产生RGB三种颜色。部分代码如下:41四、所作图形7*5的调色板5*4的调色板,时间间隔较大,颜色差别也较大,并过渡了一个色调41可以看到,时间间隔为500ms时,每两个色块的颜色相同五,实验部分代码//Settheiconforthisdialog.Theframeworkdoesthisautomatically//whentheapplication'smainwindowisnotadialogSetIcon(m_hIcon,TRUE);//SetbigiconSetIcon(m_
4、hIcon,FALSE);//Setsmallicon//TODO:AddextrainitializationherereturnTRUE;//returnTRUEunlessyousetthefocustoacontrol}41voidCTiaosebanDlg::OnSysCommand(UINTnID,LPARAMlParam){if((nID&0xFFF0)==IDM_ABOUTBOX){CAboutDlgdlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID,lParam);}}//Ifyouaddami
5、nimizebuttontoyourdialog,youwillneedthecodebelow//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,//thisisautomaticallydoneforyoubytheframework.voidCTiaosebanDlg::OnPaint(){if(IsIconic()){CPaintDCdc(this);//devicecontextforpaintingSendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc
6、(),0);//CentericoninclientrectangleintcxIcon=GetSystemMetrics(SM_CXICON);41intcyIcon=GetSystemMetrics(SM_CYICON);CRectrect;GetClientRect(&rect);intx=(rect.Width()-cxIcon+1)/2;inty=(rect.Height()-cyIcon+1)/2;//Drawtheicondc.DrawIcon(x,y,m_hIcon);}else{CDialog::OnPaint();}CRectrect(0,0,1000,120
7、0);CDC*dc=this->GetDC();CBrushbrush;brush.CreateSolidBrush(RGB(3,25,4));dc->FillRect(&rect,&brush);CRectrec;intstartx,starty,width,left,right,top,bottom;startx=10;starty=10;width=64;left=startx;top=starty;41right=left+60;bottom=top+60;for(int