欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > PPT文档下载
 

windows的图形设备接口及windows绘.ppt

  • 资源ID:11550327       资源大小:670.31KB        全文页数:55页
  • 资源格式: PPT        下载积分:14.9积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要14.9积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

windows的图形设备接口及windows绘.ppt

第3讲Windows的图形设备接口及windows绘图,Windows图形设备接口(GDI)是为与设备无关的图形设计的。所谓设备的无关性,就是操作系统屏蔽了硬件设备的差异,因而设备无关性能使用户编程时无需考虑特殊的硬件设置,1.GDI的一些基本概念设备描述表即为设备环境的属性的集合,应用程序与输出设备之间的桥梁,Win系统,外设,直接访问,统一的设备环境(DC),使应用程序与设备相连,应用程序,设备描述表及其属性,通过设备描述表的句柄来间接地存取,应用程序每一次图形操作均参照设备描述表中的属性执行,2.图形刷新,(1)刷新请求,(2)系统对刷新请求的响应当用户区的内容需要刷新时,系统向应用程序消息队列发送WM_PAINT消息,系统在应用程序的消息队列中加入该消息,以通知窗口函数执行刷新处理,三种刷新,窗口移动后的刷新被覆盖区域的刷新对象穿越后的刷新(系统自动完成),用户区移动或显示用户窗口大小改变程序通过滚动条滚动窗口,窗口被另一个窗口覆盖的恢复如下拉式菜单关闭等,光标穿过用户区图标拖过用户区,窗口被另一个窗口覆盖的区域称为无效区域。Windows系统为每个窗口建立了一个PAINTSTRUCT结构,该结构中包含了包围无效区域的一个最小矩形的结构RECT,应用程序可以根据这个无效矩形执行刷新操作。,typedefstructtagPAINTSTRUCTHDChdc;/设备环境句柄BOOLfErase;/一般取真值,表示擦除无效矩形的背景RECTrcPaint;/无效矩形标识BOOLfRestore;/系统保留BOOLfIncUpdate;/系统保留BYTErgbReserved32;/系统保留PAINTSTRUCT;,常用的windows应用程序刷新窗口的方法,保存副本。刷新时将副本拷贝到相应的窗口中,记录事件。刷新时重新执行这个曾经发生的事件,重新绘制。将图形绘制处理程序放在消息WM_PAINT响应模块中,刷新时重绘图形,(3)有效的刷新方法,3.获取设备环境的方法,获取设备环境是应用程序输出图形的先决条件,常用的两种方法是调用函数BeginPaint或GetDC,由BeginPaint函数获取的设备环境要用EndPaint函数释放BOOLEndPaint(HWNDhwnd,PAINTSTRUCT,由GetDC函数获取的设备环境必须用ReleaseDC函数释放voidReleaseDC(HWNDhwnd);,4.映像模式映像模式定义了将逻辑单位转化为设备的度量单位以及设备的x方向和y方向,程序员可在一个统一的逻辑坐标系中操作而不必考虑输出设备的坐标系情况,窗口:对应逻辑坐标系上程序员设定的区域视口:对应实际输出设备上程序员设定的区域,窗口和视口如何映射?,坐标系统,逻辑坐标系统,设备坐标系统,应用程序可获取设备环境的当前映像模式,并根据需要设置映像模式。,相关函数,设置设备环境的映像模式SetMapMode(hdc,nMapMode);nMapMode为映像模式的整型标识符,获取当前设备环境的映像模式nMapMode=GetMapMode(hdc);,窗口区域的定义由SetWindowExtEx函数完成,其函数原型形为:BOOLSetWindowExtEx(HDChdc,intnHeight,nWidth,/以逻辑单位表示的窗口区域高宽度LPSIZElpSize,/函数调用前窗口区域尺寸的SIZE结构地址);,视口区域的定义由SetViewportExtEx函数完成,函数原型为:BOOLSetViewportExtEx(HDChdc,intnHeight,nWidth,/以物理设备单位表示的新视口区域高宽度LPSIZElpSize);,只有在映射模式为MM_ANISOTROPIC和MM_ISOTROPIC时才有意义,视口的缺省原点和窗口的缺省原点均为(0,0)。可通过调用函数SetViewportOrgEx和SetWindowOrgEx设定窗口与视口的原点。SetWindowOrgEx函数的原形为:BOOLSetWindowOrgEx(HDChdc,intX,Y,/以逻辑单位表示的窗口原点坐标LPPOINTlpPoint/函数调用前原点坐标的POINT结构的地址);,只有在映射模式为MM_ANISOTROPIC和MM_ISOTROPIC时才有意义,二、绘图工具与颜色,1.画笔,(1)画笔的创建使用画笔之前必须事先定义一个画笔句柄。形式如下:HPENhPen;然后调用函数GetStockObject获取Windows系统定义的四种画笔例如获取画笔BLACK_PEN的形式如下:hPen=(HPEN)GetStockObject(BLACK_PEN);,WHITE_PENBLACK_PENDC_PENNULL_PEN,(2)创建新画笔,形式如下:hPen=CreatePen(intnPenStyle,/确定画笔样式intnWidth,/画笔宽度COLORREFrgbColor/画笔颜色);,创建画笔后,必须调用SelectObject函数将其选入设备环境。SelectObject(hdc,hP);/hP为所创建或获取的画笔句柄,不再使用当前画笔时,需删除画笔,以免占内存DeleteObject(hP);,PS_DASH:虚线PS_DASHDOT:点划线PS_DASHDOTDOT:双点划线PS_DOT:点线PS_INSIDEFRAME:实线PS_NULL:无PS_SOLID:实线,2.画刷画刷的创建与应用与画笔很相似,操作画刷也包括创建、选入设备环境和删除。(1)画刷的创建使用画刷需事先定义一个画刷句柄。形式如下:HBRUSHhBr;/hBr为画刷句柄然后调用函数GetStockObject获取Windows系统提供的7种画刷hBr=(HBRUSH)GetStockObject(nBrushStyle)画刷样式,BLACK_BRUSH黑色画刷DKGRAY_BRUSH深灰色画刷GRAY_BRUSH灰色画刷HOLLOW_BRUSH虚画刷LTGRAY_BRUSH亮灰色画刷NULL_BRUSH空画刷WHITE_BRUSH白色画刷,指定颜色画刷如何获得?,可调用函数CreateSolidBrush和CreateHatchBrush创建画刷,hBr=CreateSolidBrush(rgbColor);,创建具有指定颜色的单色画刷,创建指定阴影图案和颜色的画刷,(2)选入设备环境创建画刷后,通过SelectObject(hdc,hBr);将其选入设备环境(3)删除画刷不使用画刷时,可用DeleteObject(hBr);删除画刷,释放内存,3.颜色,Windows使用宏RGB定义绘图的颜色,其形式为:RGB(nRed,nGreen,nBlue),红色值,蓝色值,绿色值,RGB(255,0,0),RGB(0,255,0),RGB(0,0,255),三、常用绘图函数,1设置画笔当前位置的函数MoveToEx,BOOLMoveToEx(HDChdc,intX,Y,/X、Y分别为新位置的逻辑坐标LPPOINTlpPoint/存放原画笔位置的POINT结构地址),2从当前位置向指定坐标点画直线的函数LineToEx,BOOLLineToEx(HDChdc,intX,intY)/X和Y为线段的终点坐标,3从当前位置开始,依次用线段连接lpPoints中指定的各点BOOLPolyline(HDChdc,LPPOINTlpPoints,/指向包含各点坐标的POINT结构数组的指针intnCount/nCount为POINT数组中点的个数),4绘制椭圆弧线的函数Arc,BOOLArc(HDChdc,intX1,intY1,/边框矩形左上角的逻辑坐标intX2,intY2,/边框矩形右下角的逻辑坐标intX3,intY3,/椭圆弧起始点坐标intX4,intY4/椭圆弧终止点坐标),5绘制饼图,并用当前画刷进行填充BOOLPie(HDChdc,intX1,intY1,/边框矩形左上角的逻辑坐标intX2,intY2,/边框矩形右下角的逻辑坐标intX3,intY3,/椭圆弧起始经线的确定点坐标intX4,intY4/椭圆弧终止经线的确定点坐标),6绘制矩形,并用当前画刷进行填充BOOLRectangle(HDChdc,intX1,intY1,intX2,intY2),(X1,Y1)和(X2,Y2)分别为矩形的左上角和右下角的逻辑坐标,7绘制圆角矩形,并用当前画刷填充BOOLRoundRect(HDChdc,intX1,intY1,intX2,intY2,intnHeight,intnWidth),圆角的高度和宽度,8绘制椭圆,并用当前画刷填充BOOLEllipse(HDChdc,intX1,intY1,intX2,intY2),9绘制多边形,并用当前画刷填充BOOLPolygon(HDChdc,LPPOINTlpPoints,intnCount),包含各点坐标的POINT数组的地址,多边形点的个数,四、应用实例【例4-1】利用绘图函数创建填充区。共有三个填充图形,第一个是用深灰色画刷填充带圆角的矩形,第二个是采用亮灰色画刷填充一个椭圆型图,第三个是用虚画刷填充饼形图。,#include#include#includelongWINAPIWndProc(HWNDhWnd,UINTiMessage,UINTwParam,LONGlParam);,使用虚画刷填充时,看不出填充效果!,BOOLInitWindowsClass(HINSTANCEhInstance);BOOLInitWindows(HINSTANCEhInstance,intnCmdShow);,intWINAPIWinMain/主函数(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow)MSGMessage;if(!InitWindowsClass(hInstance)returnFALSE;if(!InitWindows(hInstance,nCmdShow)returnFALSE;while(GetMessage(,longWINAPIWndProc(HWNDhWnd,UINTiMessage,UINTwParam,LONGlParam)HDChDC;/定义指向设备的句柄HBRUSHhBrush;/定义指向画刷的句柄HPENhPen;/定义指向画笔的句柄PAINTSTRUCTPtStr;/定义指向包含绘图信息的结构体变量,消息处理函数,switch(iMessage)/处理消息caseWM_PAINT:/处理绘图消息hDC=BeginPaint(hWnd,/采用亮灰色画刷,下面只改变画刷,不改变笔,SelectObject(hDC,hBrush);/选择画刷Ellipse(hDC,150,50,200,150);/绘制椭圆hBrush=(HBRUSH)GetStockObject(HOLLOW_BRUSH);/虚画刷SelectObject(hDC,hBrush);/选择画刷Pie(hDC,250,50,300,100,250,50,300,50);/绘制饼形EndPaint(hWnd,BOOLInitWindows(HINSTANCEhInstance,intnCmdShow)/初始化窗口HWNDhWnd;hWnd=CreateWindow("WinFill",/生成窗口"填充示例程序",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);if(!hWnd)returnFALSE;ShowWindow(hWnd,nCmdShow);/显示窗口UpdateWindow(hWnd);returnTRUE;,BOOLInitWindowsClass(HINSTANCEhInstance)/定义窗口类WNDCLASSWndClass;WndClass.cbClsExtra=0;WndClass.cbWndExtra=0;WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH);WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);WndClass.hIcon=LoadIcon(NULL,"END");WndClass.hInstance=hInstance;WndClass.lpfnWndProc=WndProc;WndClass.lpszClassName="WinFill"WndClass.lpszMenuName=NULL;WndClass.style=CS_HREDRAW|CS_VREDRAW;returnRegisterClass(,例4-2:应用画笔和画刷等工具绘制如图所示的图形,1#include2#include3#include4longWINAPIWndProc(HWNDhWnd,UINTiMessage,UINTwParam,LONGlParam);5BOOLInitWindowsClass(HINSTANCEhInstance);6BOOLInitWindows(HINSTANCEhInstance,intnCmdShow);7/主函数8intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow)9MSGMessage;10if(!InitWindowsClass(hInstance)returnFALSE;11if(!InitWindows(hInstance,nCmdShow)returnFALSE;12while(GetMessage(,longWINAPIWndProc(HWNDhWnd,UINTiMessage,UINTwParam,LONGlParam)1HDChDC;/定义设备环境句柄2HBRUSHhBrush;/定义画刷的句柄3HPENhPen;/定义画笔的句柄4PAINTSTRUCTPtStr;/定义指向包含绘图信息的结构体变量/定义一个POINT数组,包括6个点5POINTpoints6=100,212,70,227,70,250,130,250,130,227,100,212;6switch(iMessage)/处理消息7caseWM_PAINT:/处理绘图消息8hDC=BeginPaint(hWnd,1Polyline(hDC,points,6);/画一个五边形2Arc(hDC,63,137,138,212,100,137,100,137);/画一个圆3Pie(hDC,213,137,288,212,240,137,260,137);/画一个圆饼4Rectangle(hDC,213,212,287,250);/画一个长方形5RoundRect(hDC,213,100,287,137,20,20);/画一个圆角长方形6DeleteObject(hPen);/删除画笔7DeleteObject(hBrush);/删除画刷8EndPaint(hWnd,BOOLInitWindows(HINSTANCEhInstance,intnCmdShow)/初始化窗口HWNDhWnd;hWnd=CreateWindow("WinFill",/生成窗口"填充示例程序",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);if(!hWnd)returnFALSE;ShowWindow(hWnd,nCmdShow);/显示窗口UpdateWindow(hWnd);returnTRUE;,BOOLInitWindowsClass(HINSTANCEhInstance)/定义窗口类WNDCLASSWndClass;WndClass.cbClsExtra=0;WndClass.cbWndExtra=0;WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH);WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);WndClass.hIcon=LoadIcon(NULL,"END");WndClass.hInstance=hInstance;WndClass.lpfnWndProc=WndProc;WndClass.lpszClassName="WinFill"WndClass.lpszMenuName=NULL;WndClass.style=CS_HREDRAW|CS_VREDRAW;returnRegisterClass(,【例4-3】设置映射与使用映射模式。程序的初始阶段按模式MM_TEXT绘图,用户单击鼠标以改变映射模式,单击左键,产生WM_LBUTTONDOWN消息,通知应用程序设置映射模式为ISOTROPIC,并调用InvalidateRect函数刷新用户区,在用户单击鼠标右键时,产生WM_RBUTTONDOWN消息,应用程序将映射模式设置成ANSIOTROPIC,同时刷新用户区。,LRESULTCALLBACKWndProc(,)HDChdc;PAINTSTRUCTps;HBRUSHhB1,hB2;switch(message)caseWM_LBUTTONDOWN:/单击鼠标左键的消息nMode=MM_ISOTROPIC;/更改映射模式为MM_ISOTROPICInvalidateRect(hwnd,NULL,1);/刷新用户区break;caseWM_RBUTTONDOWN:/单击鼠标右键消息nMode=MM_ANISOTROPIC;/更改显示模式为MM_ANISOTROPICInvalidateRect(hwnd,NULL,1);/刷新用户区break;,caseWM_PAINT:hdc=BeginPaint(hwnd,【例4-4】编写一个程序,在屏幕上出现一个圆心沿正弦曲线轨迹移动的实心圆,而且,每隔四分之一周期,圆的填充色和圆的周边颜色都发生变化,同时,圆的半径在四分之一周期之内由正弦曲线幅值的0.2倍至0.6倍线性增长。,(1)正弦曲线是此题的基础。在WndMain()函数消息循环前,生成正弦曲线各点的坐标。把正弦曲线一个周期的横坐标分成100个等分点,存储在数组lpSin100中,100个点的坐标计算如下:,for(intj=0;j<100;j+)/生成正弦曲线的点坐标lpSinj.x=(long)(j*2*Pi/100*60);lpSinj.y=(long)(dfRange*sin(j*2*Pi/100);,(2)动态显示圆在正弦曲线上移动,数组lpSin100的长度为100,设定圆在正弦曲线移动时共有100个位置,数组中每一个值是圆移动时圆心的坐标,每四分之一周期有25个位置,i<=25处于第1个1/4周期,创建红色画笔和画刷;25<i<50处于第2个1/4周期,创建绿色画笔和画刷;50<i<75处于第3个1/4周期,创建蓝色画笔和画刷;75<i<100处于第4个1/4周期,创建黄色画笔和画刷;,if(i<=25)/第一个1/4周期hPen=CreatePen(PS_DASH,1,RGB(255,0,0);hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(255,0,0);lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);/计算半径,在消息WM_PAINT处理程序中,调用函数BeginPaint()获得设备环境句柄。由此经过线性差分计算圆半径的大小lRadious,第1个1/4周期的程序代码如下:,创建的画笔和画刷选入设备环境后,调用函数Ellipse()绘制圆形下面这段代码是动态显示的关键:Sleep(100);/停0.1秒if(i<100)InvalidateRect(hWnd,NULL,1);/刷新用户区调用Sleep(100)函数使程序暂停0.1秒。所含参数100代表暂停的时间,使用毫秒作单位。,i<100时调用函数刷新用户区发送WM_PAINT消息,消息发到的窗口的句柄,代表刷新整个用户区,代表清除用户区中所有的显示内容,#include#include#include#include#definePi3.1415926longWINAPIWndProc(HWNDhWnd,UINTiMessage,UINTwParam,LONGlParam);doubledfTheta=0,dfRange=100.0;/正弦曲线的角度变量.longi=0,j=0;longlCentreX=0,lCentreY=0,lRadious=(long)(0.2*dfRange);/定义圆心坐标和圆半径.POINTlpSin100;/定义正弦曲线的点坐标.intWINAPIWinMain(,.)/填写窗口类属性if(!RegisterClass(,hWnd=CreateWindow("SIN",/窗口类名.“4_4",/标题名.WS_OVERLAPPEDWINDOW,/带标题栏,最大/小按钮的窗口CW_USEDEFAULT,/窗口左上角坐标.0,CW_USEDEFAULT,/采用缺省的宽度和高度.0,NULL,/无父窗口.NULL,/无主菜单.hInstance,/当前实例句柄.NULL);.ShowWindow(hWnd,nCmdShow);/显示窗口.UpdateWindow(hWnd);/更新并绘制用户区.,1.for(intj=0;j<100;j+)/生成正弦曲线的点坐标.2.3.lpSinj.x=(long)(j*2*Pi/100*60);4.lpSinj.y=(long)(dfRange*sin(j*2*Pi/100);5.6.while(GetMessage(,longWINAPIWndProc(HWNDhWnd,UINTiMessage,UINTwParam,LONGlParam)1.HDChDC;/定义设备环境句柄.2.HBRUSHhBrush;/定义画刷句柄3.HPENhPen;/定义画笔句柄4.PAINTSTRUCTPtStr;/定义包含绘图信息的结构体变量5.switch(iMessage)6.caseWM_PAINT:/处理绘图消息7.hDC=BeginPaint(hWnd,/绘制正弦曲线,if(i<=25)/第一个1/4周期.hPen=CreatePen(PS_DASH,1,RGB(255,0,0);hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(255,0,0);lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);/计算半径,elseif(i<=50)/第二个1/4周期.hPen=CreatePen(PS_DASH,1,RGB(0,255,0);hBrush=CreateHatchBrush(HS_DIAGCROSS,RGB(0,255,0);lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);,elseif(i<=75)/第三个周期.hPen=CreatePen(PS_DASH,1,RGB(0,0,255);hBrush=CreateHatchBrush(HS_CROSS,RGB(0,0,255);lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);,else/第四个周期.hPen=CreatePen(PS_DASH,1,RGB(255,255,0);hBrush=CreateHatchBrush(HS_VERTICAL,RGB(255,255,0);lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);,1.SelectObject(hDC,hBrush);/选入画刷.2.SelectObject(hDC,hPen);/选入画笔.3.lCentreX=lpSini.x;/圆心x坐标.4.lCentreY=lpSini.y;/圆心y坐标.5.Ellipse(hDC,lCentreX-lRadious,lCentreY-lRadious,lCentreX+lRadious,lCentreY+lRadious);/画圆6.i+;7.DeleteObject(hPen);/删除画笔8.DeleteObject(hBrush);/删除画刷9.EndPaint(hWnd,【例4-5】绘图与刷新。制订一种重新绘制图形的刷新方式,将图形绘制模块放在消息WM_PAINT的处理过程中,当窗口需要刷新时,通知窗口函数重新绘制图形以完成刷新工作。本例要求先使用画笔和画刷绘制一个矩形,然后使用红色网格绘制一个椭圆,再使用绿色点划线绘制椭圆的轴线。,#include#include#include#includeLRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInst,LPSTRlpszCmdLine,intnCmdShow)HWNDhwnd;MSGMsg;WNDCLASSwndclass;charlpszClassName="基本绘图"charlpszTitle="My_Drawing"wndclass.style=0;/填写属性wndclass.lpszClassName=lpszClassName;,if(!RegisterClass(,hwnd=CreateWindow(,);ShowWindow(hwnd,nCmdShow);UpdateWindow(hwnd);while(GetMessage(,LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam)HDChdc;PAINTSTRUCTps;HPENhP;/定义画笔句柄HBRUSHhB;/定义画刷句柄switch(message)caseWM_PAINT:/通过响应WM_PAINT消息完成绘图工作hP=CreatePen(PS_DASHDOT,1,RGB(0,255,0);/自定义绿笔/所画线条为点划线,宽度为1hB=CreateHatchBrush(HS_CROSS,RGB(255,0,0);/红色网状hdc=BeginPaint(hwnd,/绘制椭圆,并填充,SelectObject(hdc,hP);/更新画笔,选“自定义绿笔”MoveToEx(hdc,100,130,NULL);/使用当前画笔绘制轴线LineTo(hdc,300,130);MoveToEx(hdc,200,30,NULL);LineTo(hdc,200,230);EndPaint(hwnd,【例4-6】设置映像与使用映像模式实例。本例中的程序运行时,初始阶段按模式MM_TEXT绘图,图形为一个坐标系,以逻辑坐标系的原点为原点,X、Y轴分别是逻辑坐标系的X、Y轴。当用户按下A键B键或C键时,产生WM_CHAR消息,将映像模式分别设置为ISOTROPIC、ANISOTROPIC或LOMETRIC,同时调用InvalidateRect函数刷新用户区。,按A键,按B键,按C键,1.#include2.#include3.#include4.#include5.LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);6.intnMode=MM_TEXT;/设置映像模式的初始值7.8.LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam)9.HDChdc;10.PAINTSTRUCTps;11.HPENhPen;12.switch(message)caseWM_CHAR:/按下不同的键时,设置不同的映像模式15.if(wParam=a|wParam=A)nMode=MM_ISOTROPIC;elseif(wParam=b|wParam=B)nMode=MM_ANISOTROPIC;elseif(wParam=c|wParam=C)nMode=MM_LOMETRIC;else;InvalidateRect(hwnd,NULL,1);/刷新用户区break;,1.caseWM_PAINT:2.hdc=BeginPaint(hwnd,

注意事项

本文(windows的图形设备接口及windows绘.ppt)为本站会员(sh****n)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!