计算机图形学实验课实验报告总_第1页
计算机图形学实验课实验报告总_第2页
计算机图形学实验课实验报告总_第3页
计算机图形学实验课实验报告总_第4页
计算机图形学实验课实验报告总_第5页
已阅读5页,还剩152页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、西南交通大学信息科学与技术学院计算机图形学实验课(2015 2016 学年 第II学期)实验报告学号:20132184 姓名:朱彦荣专业:软件工程 班级:软件工程2课程名称 计算机图形学 班级_软件工程2_ 学号_20132184_ 姓名_朱彦荣_实验日期 2016/3/23 实验成绩 实验名称 实验一、键盘与鼠标按键消息处理实验 1. 实验目的 熟悉集成开发环境和编辑操作,了解外围设备的工作原理,根据设备特征和产生的消息信号处理消息,管理设备。2. 实验设备 设备编号设备名称数 量1鼠标12键盘13主机14显示器15网线1 3. 实验设计过程说明软件设计工具名称: VC+6.0 实验内容:

2、在键盘上进行按键操作,如果是可显示字符,在屏幕上输出对应的ASCII码; 点击鼠标左键,在屏幕上的客户区窗口中鼠标点击的位置,输出一提示字符串。设计过程: 在VC+6.0中建立win32 Applicaption,然后在消息处理机制中添加相应的处理事件,点击运行即可。基本工作原理: 该实验的核心就是消息处理。消息,来自于事件(event),我们的所有操作无外乎是对事件的处理。任何大的事件总能不断细分成很多个基本事件,而基本事件依据与硬件设备输入设备的不同而增加。比如“点击鼠标左键”这个事件就会产生相应的消息,我们要做的就是对消息的处理了。根据上面的论证,我们可以很轻松的理解这一环境编程的核心。

3、当用户在窗口上按下一个字符键,程序将得到一条WM_CHAR消息,在其wParam参数中含有字符的码值,该消息包含了可显示字符的码值。当用户按下鼠标左键,将产生WM_LBUTTONDOWN消息,可以根据这些消息特征编写消息处理函数,并在窗口中输出对应的文字信息,管理设备。设计步骤: 建立工程-编写消息处理函数-运行程序,观察结果#include #include LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);char szTitle=Simple Program for Windows; /titleint APIENTRY WinMain(

4、HINSTANCE hInstance, /application program instance handle HINSTANCE hPreInst, /the program instance previous handle LPSTR lpszCmdLine, / Commandline parameter string int nCmdShow) / the program beginning how to show windowHWND hWnd; MSG msg; WNDCLASS wcGRF; if (!hPreInst) /若hPeInst为零,则说明正运行的这个实例是程序的

5、第一个实例, /仅当运行第一个实例时,需要注册窗口类(对16 位程序而言) /注册窗口类如下: wcGRF.lpszClassName =szTitle; /窗口类的类名 wcGRF.hInstance =hInstance; /定义该类的应用程序的句柄 wcGRF.lpfnWndProc =WndProc; /窗口函数 wcGRF.hCursor =LoadCursor(NULL,IDC_CROSS); /光标对象的句柄 wcGRF.hIcon =LoadIcon(NULL,IDI_APPLICATION); /图标对象的句柄 wcGRF.lpszMenuName =NULL; /标识菜单对

6、象的字符串 wcGRF.hbrBackground =(HBRUSH):GetStockObject(WHITE_BRUSH); /used to clear handle wcGRF.style =CS_HREDRAW|CS_VREDRAW; /windows style; wcGRF.cbClsExtra =0; /类变量占据的存储空间 wcGRF.cbWndExtra =0; /实例变量占用的存储空间 if (!RegisterClass(&wcGRF) /如注册失败则返回 return FALSE;/ 对每个实例创建一个窗口对象 hWnd=CreateWindow(szTitle, /

7、类名,指定该窗口所属的类 szTitle, /窗口名,即在标题栏显示的文本 WS_OVERLAPPEDWINDOW, /窗口风格,以下四个参数确定窗口初始位置及大小 30, /窗口左上角相对屏幕的X 坐标 30, /窗口左上角相对屏幕的Y 坐标 540, /窗口宽度 360, /窗口高度 NULL, /父窗口句柄 NULL, /菜单句柄 hInstance, /实例句柄 NULL); /额外参数 ShowWindow(hWnd,nCmdShow); UpdateWindow(hWnd); /消息循环 while (GetMessage(&msg,NULL,0,0) /从应用程序队列中取出一条消

8、息 TranslateMessage(&msg); /翻译消息 DispatchMessage(&msg); /发送消息 return (msg.wParam);LRESULT CALLBACK WndProc( HWND hWnd,UINT Msg,WPARAM wParam, LPARAM lParam) HDC hDC; switch(Msg) case WM_CHAR: char str40; sprintf(str,the char code is HEX:%xH DEC:%d,wParam,wParam); MessageBox(hWnd,str, KeyBoard keypres

9、s Test,MB_OKCANCEL); break; case WM_LBUTTONDOWN: MessageBox(hWnd,mouse click, Mouse Press ,MB_OK); hDC=GetDC(hWnd); TextOut(hDC,LOWORD(lParam),HIWORD(lParam), click mouse left ,strlen( click mouse left ); ReleaseDC(hWnd,hDC); break; case WM_CLOSE: if(IDOK=MessageBox(NULL,真的要退出吗?, Window Close ,MB_OK

10、CANCEL|MB_ICONQUESTION) DestroyWindow(hWnd); break; case WM_PAINT: PAINTSTRUCT ps; hDC=BeginPaint(hWnd,&ps); /在WM_PAINT里必须用这个函数 TextOut(hDC,0,0, Mouse Left Button and Key Test,strlen( Mouse Left Button and Key Test); EndPaint(hWnd,&ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: ret

11、urn(DefWindowProc(hWnd,Msg, wParam,lParam ); return 0;/*LRESULT CALLBACK WndProc(HWND hWnd, UINT messg,WPARAM wParam,LPARAM lParam) HDC hdc; PAINTSTRUCT ps; RECT rect; switch (messg) case WM_PAINT : hdc=BeginPaint(hWnd,&ps); GetClientRect(hWnd,&rect); DrawText(hdc, Hello,朱彦荣!, -1,&rect,DT_CENTER|DT_

12、VCENTER); EndPaint(hWnd,&ps); return 0; case WM_DESTROY: PostQuitMessage(0); return(0); return DefWindowProc(hWnd,messg,wParam,lParam);*/执行顺序: 消息的分派和处理实验结果记录: 单击鼠标左键:点击确定后:在键盘上点击a得到的结果:4. 实验结果的分析和描述 由实验的内容和环境可以知道,该实验的核心就是消息处理。说起消息处理,这是模仿人类社会工作方式的一种仿真模式。消息,来自于事件(event),我们的所有操作无外乎是对事件的处理。任何大的事件总能不断细分成

13、很多个基本事件,而基本事件依据与硬件设备输入设备的不同而增加。比如“点击鼠标左键”这个事件就会产生相应的消息,我们要做的就是对消息的处理了。根据上面的论证,我们可以很轻松的理解这一环境编程的核心。核心代码分析: 这个实验主要是两个输入设备上的测试,首先是键盘,当我们按下键盘上的一个键时,会经过很复杂的过程,比如8042、8048等硬件最终将按下键的make,break码等传入缓冲区中,并且在此程序中会产生 WM_CHAR这一消息,我们要做的就是对这个消息的处理了,很简单的,操作系统已经为我们屏蔽了很多的细节。同样,点击鼠标也是同样的道理,不再一一赘述了。实验结果的分类: 点击鼠标,弹出对话框;

14、按下按键,弹出对话框。各个主要组成部分的说明:主要是消息处理的代码。存在的问题:功能简陋可以改进的方面和建议:可以添加更加复杂的消息处理事件,使得整个程序更加系统化。课程名称 计算机图形学 班级: 软件工程2 学号: 20132184 姓名: 朱彦荣 实验日期: 2016/3/30 实验成绩: 实验名称: 实验二、窗口移植与简单图案绘制实验 1. 实验目的 掌握计算机图形学编程实现最基本的图形程序的步骤和方法.2. 实验设备 设备编号设备名称数 量1鼠标12键盘13主机14显示器15网线1 3. 实验设计过程说明软件设计工具名称: VC+6.0 实验内容: 窗口移植与简单图案绘制 设计过程:编

15、写程序-编译运行-逐步迭代改进-得出结果基本工作原理: 这次的实验目的是让我们更好的理解框架和使用绘图函数,因此绘图的原理很简单。设计步骤:编写程序-编译运行-逐步迭代改进-得出结果void CPaint_simple_graphicsView:OnDraw(CDC* pDC)CPaint_simple_graphicsDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data here /建立画笔 CPen pen_Zuobixi; pen_Zuobixi.CreatePen(PS_SO

16、LID,4,RGB(0,0,0); pDC-SelectObject(&pen_Zuobixi); /指定原点 pDC-SetViewportOrg(100,255); pDC-SetTextColor(RGB(255,0,0); /绘制横坐标 CString sPIText=-1/2,1/2,3/2,2,5/2,3,7/2,4,9/2,5; int n=-1; int nTemp=0; while (nTempLineTo(60*n,0); pDC-LineTo(60*n,-5); pDC-MoveTo(60*n,0); pDC-TextOut(60*n-sPITextn+1.GetLeng

17、th()*3,16,sPITextn+1); n+; nTemp +=60; pDC-MoveTo(0,0); CString strTemp; /绘制纵坐标 for(n=-4,nTemp = 0;nTempLineTo(0,60*n); pDC-LineTo(5,60*n); pDC-MoveTo(0,60*n); strTemp.Format(%d,-n); pDC-TextOut(10,60*n,strTemp); double y,radian; for(int x=-60;xMoveTo(int)x,(int)y); pDC-LineTo(int)x,(int)y); pen_Zuo

18、bixi.DeleteObject();执行顺序:当程序运行的时候会自动调用OnDraw()的内容,程序就自动执行了。实验结果记录:4. 实验结果的分析和描述 窗口移植,是窗口绘制代码的一种移植。在MFC平台下,我们可以自己搭建相应的窗口显示环境,具体的方法比较固定。简单图案的绘制,主要是考差了我们绘制基本的图案的能力,其中涉及了图案的布局、计算、显示等操作。在这里我画了一个正弦函数。实验结果的分类:绘图类、窗口移植类各个主要组成部分的说明:绘图的步骤,与当前窗口的关联。存在的问题:程序还是过于简单。可以改进的方面和建议:可以增加更多的绘图元素,丰富视觉感受。课程名称 计算机图形学 班级 软件

19、工程2 学号 20132184 姓名 朱彦荣 实验日期 2016/4/6 实验成绩 实验名称 实验三、指针式椭圆形实时显示时钟设计实验 1. 实验目的 掌握定时器的响应处理方式,掌握简单绘图函数的使用和应用程序设计。2. 实验设备 设备编号设备名称数 量1鼠标12键盘13主机14显示器15网线1 3. 实验设计过程说明软件设计工具名称: VC+6.0 实验内容: 利用消息映射与类中对应的成员函数,设计一个指针式椭圆形实时显示时钟。设计过程:分析题目制定解决方案编写时钟程序得出结论。基本工作原理:每隔一段时间,定时器就会自动调用重绘函数刷新屏幕,最终画出当前时间对应的时钟。设计步骤:分析题目制定

20、解决方案编写时钟程序得出结论。单击 VIEW 菜单的 ClassWizard项,在显示的MFC ClassWizard 对话框中的 Class name 选项中,选择 CTestView 类;在 Messages 选项中,选中 WM_TIMER 消息,如图所示,目前 WM_TIMER 消息还没有相对应的类的成员函数。 选中 WM_TIMER 消息 单击 ADD FUNCTION 按钮,就会在该类中添加与该消息对应的成员函数。本例中,为 WM_TIMER 消息在类中添加了对应的成员函数 OnTimer,如图所示。 添加类中与消息对应的成员函数单击 EditCode 按钮,可以看到系统已经自动生成

21、了处理 WM_TIMER 消息所对应的函数 OnTimer 所需的基本代码。 对于每个成员函数,在需要修改的函数中找到的注释语句“/TODO”之下,再添加所需要的应用代码就可以达到各自应用的目标了,函数 OnTimer 修改后的相应代码如下: void CTestView:OnTimer(UINT nIDEvent) InvalidateRect(NULL,true);/更新绘图区 UpdateWindow(); /更新窗口区 CView:OnTimer(nIDEvent); 然后,在OnDraw()中添加代码如下:void CMyView:OnDraw(CDC* pDC)CMyDoc* pD

22、oc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data here/获取客户区 RECT Rect; GetClientRect(&Rect); /计算椭圆中心位置 int CenterX = Rect.right/2; int CenterY = Rect.bottom/2; /取当前时间 CTime Time = CTime:GetCurrentTime(); CString str; int i,x,y; CSize size; CPen Pen2(PS_SOLID,10,RGB(123,60,

23、64); /先记下以前的画笔, 再设置当前画笔 CPen *OldPen2 = pDC-SelectObject(&Pen2); pDC-Ellipse(5,5,Rect.right-5,Rect.bottom-5);/创建一支黑色的笔,用来画椭圆 CPen Pen(PS_SOLID,20,RGB(3,234,64); /先记下以前的画笔, 再设置当前画笔 CPen *OldPen = pDC-SelectObject(&Pen); /绘制钟面椭圆 pDC-Ellipse(20,20,Rect.right-20,Rect.bottom-20); CPen Pen1(PS_SOLID,3,RGB

24、(3,3,64); /先记下以前的画笔, 再设置当前画笔 CPen *OldPen1 = pDC-SelectObject(&Pen1); pDC-Ellipse(20,20,Rect.right-20,Rect.bottom-20);double Radians; /设置字体颜色为黑色 pDC-SetTextColor(RGB(0,0,0); for(i = 1;i GetTextExtent(str,str.GetLength(); Radians = (double)i*6.28/12.0; /计算钟点放置的位置 x = CenterX - (size.cx/2) + (int)(dou

25、ble)(CenterX - 20)* sin(Radians); y = CenterY - (size.cy/2) - (int)(double)(CenterY - 20)* cos(Radians); /绘制钟点 pDC-TextOut(x,y,str); /计算时钟指针的夹角 Radians = (double)Time.GetHour() + (double)Time.GetMinute()/60.0 + (double)Time.GetSecond()/3600.0; Radians *= 6.28/12.0; /创建时钟指针画笔 CPen HourPen(PS_SOLID,5,

26、RGB(255,255,0); pDC-SelectObject(&HourPen); /绘制时钟指针 pDC-MoveTo(CenterX,CenterY); pDC-LineTo(CenterX + (int)(double)(CenterX/3)*sin(Radians), CenterY - (int)(double)(CenterY/3)*cos(Radians); /计算分钟指针的夹角 Radians = (double)Time.GetMinute()+(double)Time.GetSecond()/60.0; Radians *= 6.28/60.0; /创建分钟指针画笔 C

27、Pen MinutePen(PS_SOLID,3,RGB(255,0,255); pDC-SelectObject(&MinutePen); /绘制分钟指针 pDC-MoveTo(CenterX,CenterY); pDC-LineTo(CenterX + (int)(double)(CenterX*2)/3)*sin(Radians), CenterY - (int)(double)(CenterY*2/3)*cos(Radians); /计算秒钟指针的夹角 Radians = (double)Time.GetSecond(); Radians *= 6.28/60.0; /创建秒钟指针画笔

28、 CPen SecondPen(PS_SOLID,1,RGB(0,255,255); pDC-SelectObject(&SecondPen); /绘制秒钟指针 pDC-MoveTo(CenterX,CenterY); pDC-LineTo(CenterX + (int)(double)(CenterX*4)/5)*sin(Radians), CenterY - (int)(double)(CenterY*4)/5*cos(Radians); pDC-SelectObject(OldPen); 执行顺序:编译运行后,定时器采用中断方式不断地刷新屏幕。实验结果记录:、4. 实验结果的分析和描述

29、设当前需要显示的时间为Hour 时Minute 分Second秒,则经过简单计算就可得到各个指针实时显示夹角。计算依据为:时钟指针实时显示的夹角:AHour =(Hour +Minute/60 +Second/3600) * 2/12;分钟指针实时显示的夹角:AMinute =(Minute+Second/60) * 2/60;秒钟指针实时显示的夹角:ASecond =Second * 2/60;时钟的钟面用椭圆形显示,椭圆的中心位置可以确定在客户窗口的显示中心;绘制时、分、针时,用不同颜色的直线段显示,长度分别为椭圆半长轴的1/3、2/3、4/5;时钟表面的时间刻度,可用角度划分的方式均匀划

30、分成12 份,并用112的数字表示。时间的获取方法:利用计时器的响应函数处理,每秒钟更新一次时钟画面,重画时钟的各个指针,各指针的位置可以通过显示夹角的计算得到,达到实时显示时钟的目标。实验结果的分类:时钟绘制类、时间刷新类。各个主要组成部分的说明:注意定时器的运用。存在的问题:可以让始终更加美观一点。可以改进的方面和建议:增加更多的设计理念美化时钟。课程名称 计算机图形学 班级 软件工程2 学号 20132184 姓名 朱彦荣 实验日期 2016/4/13 实验成绩 实验名称 实验四、计算机图形学直线与圆的基本绘图算法实验 1. 实验目的 本节主要讲述如何在指定的输出设备(如光栅图形显示器)

31、上利用点构造其他基本二维几何图形(如点、直线、圆、椭圆、多边形域及字符串等)的算法与原理,并利用Visual C+编程实现这些算法。2. 实验设备 设备编号设备名称数 量1鼠标12键盘13主机14显示器15网线1 3. 实验设计过程说明软件设计工具名称: VC+6.0 实验内容: 直线与圆的基本绘图算法 设计过程:掌握原理转换成计算机语言编写编译运行程序基本工作原理:画直线算法:(1) DDA(数值微分)算法 Line: P0(0,0)P1(5,2) DDA 算法原理:如图 4-1 所示,已知过端点 p0 (x0 , y0 ), p1(x1, y1)的直线段 p0 p1 ; 直线斜率为 k=

32、(y1y0)/(x1x0),从 x 的左端点 x0 开始,向 x 右端点步进画线,步长=1(个像素),计算相应的 y 坐标 y = k x + B ;取像素点 x , round(y) 作为当前点的坐标。 计算 yi+1 = k xi+1 + B = k x1 + B + k x = y1 + k x ,当 x =1, yi+1 = yi + k ,即当 x 每递增 1,y 递增 k(即直线斜率)。 注意分析:上述算法仅适用于 k1 的情形。在这 种情况下,x 每增加 1, y 最多增加 1。当k 1时,必 图 4-1 直线 DDA 算法扫描转换 须把 x,y 地位互换,y 每增加 1,x 相

33、应增加 1/k。 (2) 直线的中点画线法 中点画线法的基本原理如图 4-2 所示。在画直线段的过程中,当前像素点为 P,下一个M Q P2 P1 像素点有两种选择,点 P1 或 P2。M 为 P1 与 P2 中点,Q 为理想直线与 X=Xp+1 垂线的交点。当 M 在 Q 的下方时,则上方的 P2 应为下一个像素点;当 M 在 Q 的上方时,应取下方的 P1 为下一点。 中点画线法的实现: 令直线段为 L p0(x0,y0), p1(x1, y1), 其方程式 F(x, y)=ax+by+c=0。 其中,a=y0y1, b=x1x0, c=x0y1x1y0; 点与 L 的关系如下: P=(x

34、p, yp) 在直线上,F(x, y)=0; 中点画线法每步迭代 在直线上方,F(x, y)0; 在直线下方,F(x, y)0。 涉及的像素和中点示意图 把 M 代入 F(x, y),判断 F 的符号,可知 Q 点在中点 M 的上方还是下方。 为此构造判别式 d=F(M)=F(xp+1, yp+0.5)=a(xp+1)+b(yp+0.5)+c。 当 d 0,L(Q 点)在 M 下方,取 P1 为下一个像素。 当 d=0,选 P1 或 P2 均可,取 P1 为下一个像素。 其中 d 是 xp, yp 的线性函数。 yi+1 y d2 d1 y1 x i+1 x1 图 (3) Bresenham画

35、直线算法 Bresenham算法是计算机图形学领域使用最广泛的直线扫描转换算法。由误差项符号决定下一个像素取右边点还是右上方点。 设直线从起点(x1, y1)到终点(x2, y2)。直线可表示为方程 y = mx+b,其中 b=y1mx1,m = (y2y1) / (x2x1)=dy/dx;此处的讨论直线方向限于第一象限,如图 4-3 所示,当直线光栅化时,x 每次都增加 1 个单元,设 x 像素为(xi,yi)。下一个像素的列坐标为 xi+1,行坐标为 yi 或者递增 1 为 yi+1,由 y 与 4-3 第一象限直线光栅化Bresenham 算法 :yi 及 yi+1 的距离 d1 及 d

36、2 的大小而定。 如果 d1d20,则 yi+1=yi+1,否则 yi+1=yi。 将式(4.1)、(4.2)、(4.3)代入 d1d2,再用 dx 乘等式两边,并以 Pi=(d1d2) dx 代入上述等式,得 Pi = 2xidy2yidx+2dy+(2b1)dx (4.4) d1d2 是用以判断符号的误差。由于在第一象限,dx 总大于 0,所以 Pi 仍然可以用做判断误差的符号。Pi+1 为 Pi+1 = Pi+2dy2(yi+1yi)dx (4.5) 求误差的初值 P1,可将 x1、y1 和 b 代入式(4.4)中的 xi、yi,而得到 P1 = 2dydx 综合上面的推导,第一象限内生

37、成直线的 Bresenham 算法思想如下: (1)画点(x1, y1),dx=x2x1,dy=y2y1,计算误差初值 P1=2dydx,i=1。 (2)求直线的下一点位置 xi+1 = xi + 1,如果 Pi0,则 yi+1=yi+1,否则 yi+1=yi。 (3)画点(xi+1, yi+1)。 (4)求下一个误差 Pi+1,如果 Pi0,则 Pi+1=Pi+2dy2dx,否则 Pi+1=Pi+2dy。 (5)i=i+1;如果 i0; 圆内的点 F(x, y)转换成计算机语言编写编译运行程序 1)启动 VC,选择“Files 件”|“New”菜单命令,并在弹出的新建对话框中单击“工程”标签

38、。 2)选择 MFC AppWizard(exe),在“Project name”编辑框中输入工程名称,单击“确定”按钮,出现应用向导窗口标题 MFC AppWizard Step 1 of 6 对话框。 3)选择“单文档”选项,单击“NEXT”按钮,出现 Step 2 of 6 对话框。 4)接受默认选项,单击“NEXT”按钮,在出现的 Step 3Step 5 对话框中,接受默认选项,单击“NEXT”按钮。 5)在 Step 6 对话框中单击“完成”按钮,即完成应用程序的主要选项,随后出现工程信息对话框(记录以上步骤各选项的选择情况),单击“确定”按钮,完成应用程序框架的创建。 设计生成直

39、线的 DDA(数值微分)算法、中点画线法、Bresenham 算法的菜单项。在工作空间 ResourceView 标签中,单击 Menu 项左边“+”,然后双击其子项 IDR_MAINFRAME,并根据表中定义的编辑菜单资源创建。菜单标题 菜单项标题 标示符 ID 直线 DDA 算法生成直线 ID_DDALINE Bresenham 算法生成直线 ID_BRESENHAMLINE 中点算法生成直线 ID_MIDPOINTLINE 添加消息处理函数 利用 ClassWizard(类向导)为应用程序添加与菜单项相关的消息处理函数,Class name栏中选择 CxxView,建立消息映射函数,Cl

40、assWizard 会自动完成有关函数声明。 菜单项 ID 消 息 消息处理函数 ID_DDALINE COMMAND OnDdaline ID_MIDPOINTLINE COMMAND OnMidpointline ID_BRESENHAMLINE COMMAND OnBresenhamline 在工作空间的 ResourceView 标签中,单击 Menu 项左边“+”,然后双击其子项 IDR_MAINFRAME,添加编辑菜单资源。建好的菜单有中点画圆和 Bresenham 画圆两种方法。 菜单标题 菜单项标题 标示符 ID 圆 中点画圆 ID_MIDPOINTCIRCLE Bresenham 画圆 ID_BRESENHAMCIRCLE (3)添加消息处理函数。 利用 ClassWizard(建立类向导)为应用程序添加与菜单项相关的消息处理函数, ClassName 栏中选择 CxxView, 建立如下的消息映射函数,ClassWizard 会自动完成有关的函数声明。 菜单项 ID 消 息 消息处理函数 ID_MIDPOINTCIRCLE CONMMAN OnMidpointcircle ID_BRESENHAMCIRCLE CONMMAN OnBresenhamcircle

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论