windows程序设计画图详解_第1页
windows程序设计画图详解_第2页
windows程序设计画图详解_第3页
windows程序设计画图详解_第4页
windows程序设计画图详解_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

windows应用程序的框架WinMain函数初始化窗口类:设置本应用程序窗口的根本特征.创立、显示、更新窗口:风格、样式的设置建立消息循环窗口函数:处理各种消息主要是switch-case结构分析各种消息及随带的参数(wParam,lParam)对各种消息进行相关处理windows程序设计学习方法阅读课本程序,从理解程序结构入手,逐渐理解Windows、应用程序、窗口函数之间的消息循环。对照查阅、了解各种API函数的功能、使用方法、适用场合对例如程序作个别修改,观察效果函数中某些设置值的改动必须学会使用“帮助”的“search”,学会阅读英语文档,才能了解各种函数的功能与用法。第四章在windows中画图在windows中画图准备画轮廓的画笔准备填充的画刷将画笔、画刷选入到设备描述表Windows中每个对象都有“句柄”,画笔、画刷也是对象,也要通过“句柄”来使用定义画笔、画刷、设备描述表的句柄变量: HPENhPen; HBRUSHhBrush;HDChdc;但hPen、hBrush、hdc还只是随机数指定某种画笔、画刷给hPen,hBrush:hPen=CreatePen(PS_SOLID, 2,

RGB(red,green,blue) );hBrush=CreateSolidBrush( RGB(red,0,0) );线型线宽线色画刷颜色画图的有关概念谁负责画图?Windows直接画?Windows通过一套称为“设备无关”的图形接口程序〔GDI函数〕进行画图程序员的责任把有关要求:笔、刷、图形、参数提供给GDI例程分析:P94/4-1函数:WinMain初始化窗口类:调用InitWindow初始化窗口:调用InitWindowsClass建立消息循环WndProc:windows回调的函数,处理消息功能:显示三个图形注意问题:InitWindow,InitWindowsClass函数和参数作图的一般过程:获取设备描述表,创立画笔、画刷,把作图工具选入设备描述表,作图。作图的语句写在哪里?WM_PAINT消息的处理。坐标原点:屏幕用户区左上角。设备描述表记录各种作图要求与参数的数据结构Windows在任一时刻都能为每个窗口提供用于作图的“设备描述表”作图前一般都要先获取当前窗口的“设备描述表”通过函数把作图所需的设备〔画笔、画刷、图形、参数〕“写入”设备描述表,也就是提供给GDI调用GDI函数由GDI进行作图。设备描述表的获取设备描述表是一个对象,也要使用“句柄”HDChDC;//定义一个句柄为hDC赋值:hDC=GetDC(hwnd);或hDC=BeginPaint(hwnd,&ps);这两种方法各有不同的适用场合什么时候要画图?处理非WM_PAINT消息时绘图处理WM_PAINT消息时绘图画图的程序写在哪里?主要在对WM_PAINT消息的处理中进行作图图形刷新画图程序设计的一般方法画笔、画刷的定义、选入设备描述表图形参数的计算调用作图函数缺省方式下的坐标系统Windows程序设计的相关概念Windows程序设计中的“对象”Windows的标准部件句柄〔windows〕对象的标识Windows应用程序的消息工作机制程序的动作是消息驱动型Windows应用程序外设的信息交换:消息消息的表示:消息号:WM_,BM_,等等消息参数:字参数wParam,lParam匈牙利表示法变量名以一个或多个小写字母开始,这些小写字母表示变量的数据类型。变量的后续字符描述变量的作用如:szCmdLine,hInstance,hPen变量名既描述了变量的作用,也描述了变量的数据类型防止产生数据类型不匹配及早发现错误事件驱动程序设计(消息驱动)过程驱动型消息驱动型Windows程序设计的学习内容建立windows应用程序的根本框架窗口环境的建立WinMain函数WM_CREATE消息的处理消息的处理:实现各种应用功能API函数的使用API:windows应用程序接口窗口管理函数GDI函数系统效劳函数运用C/C++语法学习目的:提高编程能力掌握学习开发工具的一般方法理解windows的消息机制为进行大型开发打根底习题4-6的分析正弦曲线的表现连续曲线由离散点组成,点的密度影响曲线质量,但又与画线速度相关。离散点的计算:POINTlpSin[100]; //存储正弦曲线点的坐标.for(intj=0;j<100;j++){ //生成正弦曲线点的坐标. lpSin[j].x=(long)(j*2*Pi/100*60); lpSin[j].y=(long)(dfRange*sin(j*2*Pi/100));}默认的坐标原点在哪里?在用户区左上角。一个周期的横坐标分为100等份纵坐标〔Y〕的值有正负,怎么办?对“负值坐标”的处理Y轴方向加一个振幅POINTlpSin[100]; //存储正弦曲线点的坐标.for(intj=0;j<100;j++){ //生成正弦曲线点的坐标.lpSin[j].x=(long)(j*2*Pi/100*60);lpSin[j].y=(long)(dfRange*sin(j*2*Pi/100))+dfRange;}为了看清圆,在X、Y方向再加圆半径lpSin[j].x=(long)(j*2*Pi/100*60)+0.2*dfRange;lpSin[j].y=(long)(dfRange*sin(j*2*Pi/100))+1.6*dfRange;坐标计算要放在消息循环之前圆半径的变化:

振幅的0.2~0.6倍线性增长在四分之一周期内变化:每个周期100个点,四分之一周期是25个点。在25个点内圆半径从0.2dfRange0.6dfRange:使用差分方法计算.lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);作用?25个点一循环可否改变i变量的全局性图像暂留与刷新的矛盾Sleep(…)程序暂停InvalidateRect(hWnd,NULL,1)刷新用户区中的指定区域:第二参数为空:刷新整个用户区第三参数的作用?作图中的坐标系矩形函数:Rec

温馨提示

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

评论

0/150

提交评论