资源描述:
《Windows人机交互程序设计教学课件-第07课 绘图工具.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第07课绘图工具北方软件学院NorthSoftwareInstituteWindows程序设计大纲知识回顾消息Windows绘图机制基础知识色彩原理绘图消息绘图函数绘图工具画笔画刷NorthSoftwareInstitute知识回顾NorthSoftwareInstitute知识回顾-消息机制NorthSoftwareInstitute鼠标左键按下消息**WM_LBUTTONDOWN参数功能:lParam存放当前光标的在窗口中的位置。wParam存放一个标志,该标志注明了当鼠标左键按下的时候还有什么键同时被按
2、下。NorthSoftwareInstitute如何获去鼠标按下时光标的位置坐标xPos=LOWORD(lParam);yPos=HIWORD(lParam);高位字节yPos低位字节xPosNorthSoftwareInstituteIntfwKeys=wParam;//keyflagsfwKey包含如下值:MK_CONTROL表示:鼠标左键按下时,系统ctrl键同时也被按下。MK_SHIFT表示:鼠标左键按下时,系统地shift键同时也被按下。MK_LBUTTON……MK_MBUTTON……MK_RBUT
3、TON……例如:if(fwKeys&MK_SHIFT==MK_SHIFT){。。。。。。}NorthSoftwareInstitute键盘消息WM_KEYDOWNWM_KEYUPWM_CHARNorthSoftwareInstitute*WM_KEYDOWN功能:当键盘中的一个非系统键被按下的时候产生该消息。该消息发送给当前键盘聚焦的窗口。参数:wParam虚拟键值(一般为ASCII码)lParam键盘扫描码等信息NorthSoftwareInstitute*WM_CHAR功能:当WM_KEYDOWN被Tra
4、nslateMessage函数翻译后产生该消息。参数:wParam:存放字符码(ASCII)lParam:存放键盘扫描码等。NorthSoftwareInstituteWindows绘图知识NorthSoftwareInstitute基础知识常用的显示设备有哪些?显示器绘图仪打印机……NorthSoftwareInstitute基础知识图像是如何显示在屏幕上的?NorthSoftwareInstitute基础知识图像是如何显示在屏幕上的?图像是由点组成的Windows图像是成千上万的点像素组成。NorthSo
5、ftwareInstitute基础知识色彩是怎么构成?三色素构成彩色红、绿、蓝RGB(255,0,0)一个像素点NorthSoftwareInstitute程序控制显示的原理应用程序操作系统显示器驱动程序打印机驱动程序NorthSoftwareInstitute设备环境句柄*HDC设备环境句柄HDC是数据类型HDC代表了程序当前显示设备HDC的用途:在程序中代表显示设备在绘图时,必须要指定一个设备环境(DC),用来将某个窗口或设备与设备环境类的句柄指针关联起来,所有的绘图操作都与该句柄有关。HDC的获得Beg
6、inPaintEndPaintNorthSoftwareInstituteBeginPaintHDCBeginPaint(HWNDhwnd,LPPAINTSTRUCTlpPaint);功能:返回hWnd窗口客户区的hdc句柄NorthSoftwareInstituteNorthSoftwareInstitute在程序中的位置caseWM_PAINT:hdc=BeginPaint(hWnd,&ps);RECTrt;GetClientRect(hWnd,&rt);DrawText(hdc,szHello,strl
7、en(szHello),&rt,DT_CENTER);EndPaint(hWnd,&ps);break;NorthSoftwareInstituteNorthSoftwareInstitute绘图消息WM_PAINT所有的绘图操作都在该消息下产生窗口刷新的时候产生该消息如:窗口尺寸发生变化、窗口被其他窗口覆盖函数:InvalidateRect执行的时候产生该消息使用例子:InvalidateRect(hWnd,NULL,TRUE);NorthSoftwareInstitute常用画图工具NorthSoftwa
8、reInstitute画线函数BOOLMoveToEx(HDChdc,intX,//起始xposintY,//起始yposLPPOINTlpPoint//光标的旧位置);功能:确定直线的起始坐标BOOLLineTo(HDChdc,intnXEnd,intnYEnd);功能:确定直线的结束坐标,并画线例:画一条直线MoveToEx(hdc,100,50,NULL);LineTo(hdc,200,300