




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
GDI绘图基本步骤总结 一、获得绘图的窗口句柄方法(详细参数及其调用可以看考MSDN):1、 HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName)HWND FindWindowEx(HWND hwndParent, HWND hwndChildAfter,LPCTSTR lpClassName, LPCTSTR lpWindowName)2、 HWND WindowFromPoint(POINT& Point)3、 BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam) BOOL CALLBACK EnumChildWindows(HWND hWndParent, WNDENUMPROC lpEnumFunc,LPARAM lParam) BOOL CALLBACK EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam)BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)二、由窗口句柄得到设备环境句柄HDC方法:BeginPaint、GetWindowDC、GetDC。这些函数都需要步骤一中的HWND的句柄。调用这些函数后要释放句柄,相应的有EndPaint、ReleaseDC进行清理。1、 采用BeginPaint获取HDCHDC hdc;PAINTSTRUCT ps;/ 保存hdc = :BeginPaint( hwnd, &ps );/ 此处添加绘图代码:EndPaint( hwnd, &ps );说明:获得的hdc的有效区域仅限于客户区无效区域的设备环境句柄,不包括标题栏、边框等。2、 采用GetWindowDC获取HDCHDC hdc = :GetWindowDC( hwnd );/ 此处添加绘图代码:ReleaseDC( hwnd, hdc );说明:绘制区域是整个窗口(边框、标题栏、客户区的总和)。3、 采用GetDC获取HDCHDC hdc = :GetDC( hwnd );/ 此处添加绘图代码:ReleaseDC( hwnd, hdc );说明:获得的hdc的有效区域仅限于客户区有效区域的设备环境句柄,不包括标题栏、边框等。三、图形绘制方法1、 画笔CreatePen绘画之前先选择画笔,画笔的功能主要是绘制边框,其函数原型如下:WINGDIAPI HPEN WINAPI CreatePen( _in int iStyle, / 画笔的类型,比如是实线,还是虚线等等。_in int cWidth, / 线的宽度。_in COLORREF color / 线的颜色。);/ iStyle参数可选值:PS_SOLID = 0;/ 实线PS_DASH = 1;/ 段线; 要求笔宽=1PS_DOT = 2;/ 点线; 要求笔宽=1PS_DASHDOT = 3;/ 线、点; 要求笔宽=1PS_DASHDOTDOT = 4;/ 线、点、点; 要求笔宽=1PS_NULL = 5;/ 不可见PS_INSIDEFRAME = 6;/ 实线; 但笔宽是向里扩展返回值为画笔类型,SelectObject函数选中。选中后,返回原来画刷的句柄用来恢复时使用。图形绘制完毕后使用DeleteObject函数将其释放。SelectObject函数说明:函数功能:该函数选择一对象到指定的设备上下文环境中,该新对象替换先前的相同类型的对象。函数原型:HGDIOBJ SelectObject(HDC hdc, HGDIOBJ hgdiobj);参数:hdc:设备上下文环境的句柄。hgdiobj:被选择的对象的句型,该指定对象必须由如下的函数创建。位图:CreateBitmap, CreateBitmapIndirect, CreateCompatible Bitmap, CreateDIBitmap, CreateDIBsection(只有内存设备上下文环境可选择位图,并且在同一时刻只能一个设备上下文环境选择位图)。画笔:CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrushPt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrush。字体:CreateFont, CreateFontIndirect。笔:CreatePen, CreatePenIndirect。区域:CombineRgn, CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreateRectRgn, CreateRectRgnIndirect。返回值:如果选择对象不是区域并且函数执行成功,那么返回值是被取代的对象的句柄;如果选择对象是区域并且函数执行成功,返回如下一值;DeleteObject函数说明:函数功能:该函数删除一个逻辑笔、画笔、字体、位图、区域或者调色板,释放所有与该对象有关的系统资源,在对象被删除之后,指定的句柄也就失效了。函数原型:BOOL DeleteObject(HGDIOBJ hObject);参数:hObject:逻辑笔、画笔、字体、位图、区域或者调色板的句柄。返回值:成功,返回非零值;如果指定的句柄无效或者它已被选入设备上下文环境,则返回值为零。2、 画刷画刷的功能主要是填充区域内的颜色,创建画刷的方法如下:A、CreateSolidBrush函数函数功能:该函数创建一个具有指定颜色的逻辑刷子。函数原理:HBRUSH CreateSolidBrush(COLORREF crColor);参数:crColor:指定刷子的颜色。返回值:如果该函数执行成功,那么返回值标识一个逻辑实心刷子;如果函数失败,那么返回值为NULL。B、GetStockObject函数函数功能:该函数检索预定义的备用笔、刷子、字体或者调色板的句柄。函数原型:HGDIOBJ GetStockObject(int fnObject);参数:fnObject:指定对象的类型,该参数可取如下值之一;BLACK_BRUSH:黑色画笔;DKGRAY_BRUSH:暗灰色画笔;DC_BRUSH:在Windows98,Windows NT 5.0和以后版本中为纯颜色画笔,缺省色为白色,可以用SetDCBrushColor函数改变颜色,更多的信息参见以下的注释部分。GRAY_BRUSH:灰色画笔;HOLLOW_BRUSH:空画笔(相当于HOLLOW_BRUSH);LTGRAY_BRUSH:亮灰色画笔;NULL_BRUSH:空画笔(相当于HOLLOW_BRUSH);WHITE_BRUSH:白色画笔;BLACK_PEN:黑色钢笔;DC_PEN:在Windows98、Windows NT 5.0和以后版本中为纯色钢笔,缺省色为白色,使用SetDCPenColor函数可以改变色彩,更多的信息,参见下面的注释部分。WHITE_PEN:白色钢笔;ANSI_FIXED_FONT:在Windows中为固定间距(等宽)系统字体;ANSI_VAR_FONT:在Windows中为变间距(比例间距)系统字体;DEVICE_DEFAUCT_FONT:在WindowsNT中为设备相关字体;DEFAULT_GUI_FONT:用户界面对象缺省字体,如菜单和对话框;OEM_FIXED_FONT:原始设备制造商(OEM)相关固定间距(等宽)字体;SYSTEM_FONT:系统字体,在缺省情况下,系统使用系统字体绘制菜单,对话框控制和文本;SYSTEM_FIXED_FONT:固定间距(等宽)系统字体,该对象仅提供给兼容16位Windows版本;DEFAULT_PALETTE:缺省调色板,该调色板由系统调色板中的静态色彩组成。返回值:如果成功,返回值标识声请的逻辑对象,如果失败,返回值为NULL。C、CreateHatchBrush函数函数功能:该函数可以创建一个具有指定阴影模式和颜色的逻辑刷子。函数原型:HBRUSH CreateHatchBrush(int fnStyle, COLORREF clrref);参数:fnStyle:指定刷子的阴影样式。该参数可以取下列值,这些值的含义为:HS_BDIAGONAL:表示45度向下,从左至右的阴影;HS_CROSS:水平和垂直交叉险影;HS_DIAGCROSS:45度交叉阴影;HS_FDIAGONAL:45度向上,自左至右阴影;HS_HORIZONTAL:水平阴影;HS_VERTICAL:垂直阴影。cirref:指定用于阴影的刷子的前景色。返回值:如果函数执行成功,那么返回值标识为逻辑刷子;如果函数执行失败,那么返回值为NULL。 画刷的选中和释放,请参照画笔。3、 点SetPixel函数功能:该函数将指定坐标处的像素设为指定的颜色。函数原型:COLORREF SetPixel(HDC hdc, int X, int Y, COLORREF crColor);参数:hdc:设备环境句柄。X:指定要设置的点的X轴坐标,按逻辑单位表示坐标。Y:指定要设置的点的Y轴坐标,按逻辑单位表示坐标。crColor:指定要用来绘制该点的颜色。返回值:如果函数执行成功,那么返回值就是函数设置像素的RGB颜色值。这个值可能与crColor指定的颜我色有不同,之所以有时发生这种情况是因为没有找到对指定颜色进行真正匹配造成的;如果函数失败,那么返回值是C1。4、 直线MoveToEx、LineToA、 MoveToEx函数功能:将当前位置指定为特定的某一点函数原型:BOOL MoveToEx( _in HDC hdc, _in int X, _in int Y, _out LPPoint lpPoint )参数:hdc:设备环境句柄。X:指定要设置的点的X轴坐标,按逻辑单位表示坐标。Y:指定要设置的点的Y轴坐标,按逻辑单位表示坐标。lpPoint:指向一个POINT结构,用来接收前一位置,为空时,当前位置不被返回。 返回值:执行成功返回非零,否则返回值为零。B、 LineTo函数功能:从当前点到目标点进行画线。函数原型:BOOL LineTo( int x, int y )参数说明: X:目标点的横坐标。 Y:目标点的纵坐标。返回值:成功非零,其它返回零。5、 矩形Rectangle函数功能:该函数画一个矩形,用当前的画笔画矩形轮廓,用当前画刷进行填充。函数原型:BOOL Rectangle(HDC hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);参数:hdc:设备环境句柄。nLeftRect:指定矩形左上角的逻辑X坐标。nTopRect:指定矩形左上角的逻辑Y坐标。nRightRect:指定矩形右下角的逻辑X坐标。nBottomRect:指定矩形右下角的逻辑Y坐标。返回值:如果函数调用成功,返回值非零,否则返回值为0。6、 椭圆Ellipse函数功能:该函数画一个椭圆形,用当前的画笔画矩形轮廓,用当前画刷进行填充。函数原型:BOOL Ellipse( HDC hdc, in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 滴滴车主租车合同范本
- 网络采购水果合同范本
- 紫苏种植收购合同范本
- 快递订货合同范本
- 硫精矿采购合同范本
- 食堂厨师临时合同范本
- 社区好家风好家训课件
- 贸易居间合同范本
- 兼职耗材销售合同范本
- 排版服务合同范本
- 胰岛素皮下注射团体标准解读
- 巷道掘进与顶板管理培训课件
- 宁德时代shl测评题库
- 微信小程序申请模板-电商平台对用户交易纠纷处理的机制或方案
- 方案1-绿化养护费用计算清单
- (正确)新入场人员一级安全教育考试试卷(含答案)
- 2024年10月成都市金牛区人民政府西华街道办事处公开招考1名编外人员笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 2025年牙医资格证技能试题及答案
- 初中道德与法治跨学科项目化学习的设计与实施讲座提纲
- DG-TG08-12-2024 普通中小学建设标准
- 《物业管理培训课件:业主满意度提升策略》
评论
0/150
提交评论