gdi绘图基本步骤总结

gdi绘图基本步骤总结

ID:6055757

大小:50.50 KB

页数:8页

时间:2018-01-01

上传者:U-2441
gdi绘图基本步骤总结_第1页
gdi绘图基本步骤总结_第2页
gdi绘图基本步骤总结_第3页
gdi绘图基本步骤总结_第4页
gdi绘图基本步骤总结_第5页
资源描述:

《gdi绘图基本步骤总结》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

GDI绘图基本步骤总结一、获得绘图的窗口句柄方法(详细参数及其调用可以看考MSDN):1、HWNDFindWindow(LPCTSTRlpClassName,LPCTSTRlpWindowName)HWNDFindWindowEx(HWNDhwndParent,HWNDhwndChildAfter,LPCTSTRlpClassName,LPCTSTRlpWindowName)2、HWNDWindowFromPoint(POINT&Point)3、BOOLCALLBACKEnumChildProc(HWNDhwnd,LPARAMlParam)BOOLCALLBACKEnumChildWindows(HWNDhWndParent,WNDENUMPROClpEnumFunc,LPARAMlParam)BOOLCALLBACKEnumWindows(WNDENUMPROClpEnumFunc,LPARAMlParam)BOOLCALLBACKEnumWindowsProc(HWNDhwnd,LPARAMlParam)二、由窗口句柄得到设备环境句柄HDC方法:BeginPaint、GetWindowDC、GetDC。这些函数都需要步骤一中的HWND的句柄。调用这些函数后要释放句柄,相应的有EndPaint、ReleaseDC进行清理。1、采用BeginPaint获取HDCHDChdc;PAINTSTRUCTps;//保存hdc=::BeginPaint(hwnd,&ps);//此处添加绘图代码::EndPaint(hwnd,&ps);说明:获得的hdc的有效区域仅限于客户区无效区域的设备环境句柄,不包括标题栏、边框等。2、采用GetWindowDC获取HDC HDChdc=::GetWindowDC(hwnd);//此处添加绘图代码::ReleaseDC(hwnd,hdc);说明:绘制区域是整个窗口(边框、标题栏、客户区的总和)。3、采用GetDC获取HDCHDChdc=::GetDC(hwnd);//此处添加绘图代码::ReleaseDC(hwnd,hdc);说明:获得的hdc的有效区域仅限于客户区有效区域的设备环境句柄,不包括标题栏、边框等。三、图形绘制方法1、画笔CreatePen绘画之前先选择画笔,画笔的功能主要是绘制边框,其函数原型如下:WINGDIAPIHPENWINAPICreatePen(__inintiStyle,//画笔的类型,比如是实线,还是虚线等等。__inintcWidth,//线的宽度。__inCOLORREFcolor//线的颜色。);//iStyle参数可选值:PS_SOLID=0;//实线PS_DASH=1;//段线;要求笔宽<=1PS_DOT=2;//点线;要求笔宽<=1 PS_DASHDOT=3;//线、点;要求笔宽<=1PS_DASHDOTDOT=4;//线、点、点;要求笔宽<=1PS_NULL=5;//不可见PS_INSIDEFRAME=6;//实线;但笔宽是向里扩展返回值为画笔类型,SelectObject函数选中。选中后,返回原来画刷的句柄用来恢复时使用。图形绘制完毕后使用DeleteObject函数将其释放。SelectObject函数说明:函数功能:该函数选择一对象到指定的设备上下文环境中,该新对象替换先前的相同类型的对象。函数原型:HGDIOBJSelectObject(HDChdc,HGDIOBJhgdiobj);参数:hdc:设备上下文环境的句柄。hgdiobj:被选择的对象的句型,该指定对象必须由如下的函数创建。位图:CreateBitmap,CreateBitmapIndirect,CreateCompatibleBitmap,CreateDIBitmap,CreateDIBsection(只有内存设备上下文环境可选择位图,并且在同一时刻只能一个设备上下文环境选择位图)。画笔:CreateBrushIndirect,CreateDIBPatternBrush,CreateDIBPatternBrushPt,CreateHatchBrush,CreatePatternBrush,CreateSolidBrush。字体:CreateFont,CreateFontIndirect。笔:CreatePen,CreatePenIndirect。区域:CombineRgn,CreateEllipticRgn,CreateEllipticRgnIndirect,CreatePolygonRgn,CreateRectRgn,CreateRectRgnIndirect。返回值:如果选择对象不是区域并且函数执行成功,那么返回值是被取代的对象的句柄;如果选择对象是区域并且函数执行成功,返回如下一值;DeleteObject函数说明: 函数功能:该函数删除一个逻辑笔、画笔、字体、位图、区域或者调色板,释放所有与该对象有关的系统资源,在对象被删除之后,指定的句柄也就失效了。函数原型:BOOLDeleteObject(HGDIOBJhObject);参数:hObject:逻辑笔、画笔、字体、位图、区域或者调色板的句柄。返回值:成功,返回非零值;如果指定的句柄无效或者它已被选入设备上下文环境,则返回值为零。2、画刷画刷的功能主要是填充区域内的颜色,创建画刷的方法如下:A、CreateSolidBrush函数函数功能:该函数创建一个具有指定颜色的逻辑刷子。函数原理:HBRUSHCreateSolidBrush(COLORREFcrColor);参数:crColor:指定刷子的颜色。返回值:如果该函数执行成功,那么返回值标识一个逻辑实心刷子;如果函数失败,那么返回值为NULL。B、GetStockObject函数函数功能:该函数检索预定义的备用笔、刷子、字体或者调色板的句柄。函数原型:HGDIOBJGetStockObject(intfnObject);参数:fnObject:指定对象的类型,该参数可取如下值之一;BLACK_BRUSH:黑色画笔;DKGRAY_BRUSH:暗灰色画笔;DC_BRUSH:在Windows98,WindowsNT 5.0和以后版本中为纯颜色画笔,缺省色为白色,可以用SetDCBrushColor函数改变颜色,更多的信息参见以下的注释部分。GRAY_BRUSH:灰色画笔;HOLLOW_BRUSH:空画笔(相当于HOLLOW_BRUSH);LTGRAY_BRUSH:亮灰色画笔;NULL_BRUSH:空画笔(相当于HOLLOW_BRUSH);WHITE_BRUSH:白色画笔;BLACK_PEN:黑色钢笔;DC_PEN:在Windows98、WindowsNT5.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函数函数功能:该函数可以创建一个具有指定阴影模式和颜色的逻辑刷子。函数原型:HBRUSHCreateHatchBrush(intfnStyle,COLORREFclrref);参数: fnStyle:指定刷子的阴影样式。该参数可以取下列值,这些值的含义为:HS_BDIAGONAL:表示45度向下,从左至右的阴影;HS_CROSS:水平和垂直交叉险影;HS_DIAGCROSS:45度交叉阴影;HS_FDIAGONAL:45度向上,自左至右阴影;HS_HORIZONTAL:水平阴影;HS_VERTICAL:垂直阴影。cirref:指定用于阴影的刷子的前景色。返回值:如果函数执行成功,那么返回值标识为逻辑刷子;如果函数执行失败,那么返回值为NULL。画刷的选中和释放,请参照画笔。3、点SetPixel函数功能:该函数将指定坐标处的像素设为指定的颜色。函数原型:COLORREFSetPixel(HDChdc,intX,intY,COLORREFcrColor);参数:hdc:设备环境句柄。X:指定要设置的点的X轴坐标,按逻辑单位表示坐标。Y:指定要设置的点的Y轴坐标,按逻辑单位表示坐标。crColor:指定要用来绘制该点的颜色。返回值:如果函数执行成功,那么返回值就是函数设置像素的RGB颜色值。这个值可能与crColor指定的颜我色有不同,之所以有时发生这种情况是因为没有找到对指定颜色进行真正匹配造成的;如果函数失败,那么返回值是C1。4、直线MoveToEx、LineTo A、MoveToEx函数功能:将当前位置指定为特定的某一点函数原型:BOOLMoveToEx(__inHDChdc,__inintX,__inintY,__outLPPointlpPoint)参数:hdc:设备环境句柄。X:指定要设置的点的X轴坐标,按逻辑单位表示坐标。Y:指定要设置的点的Y轴坐标,按逻辑单位表示坐标。lpPoint:指向一个POINT结构,用来接收前一位置,为空时,当前位置不被返回。返回值:执行成功返回非零,否则返回值为零。B、LineTo函数功能:从当前点到目标点进行画线。函数原型:BOOLLineTo(intx,inty)参数说明:X:目标点的横坐标。Y:目标点的纵坐标。返回值:成功非零,其它返回零。5、矩形Rectangle函数功能:该函数画一个矩形,用当前的画笔画矩形轮廓,用当前画刷进行填充。函数原型:BOOLRectangle(HDChdc,intnLeftRect,intnTopRect,intnRightRect,intnBottomRect);参数:hdc:设备环境句柄。nLeftRect:指定矩形左上角的逻辑X坐标。 nTopRect:指定矩形左上角的逻辑Y坐标。nRightRect:指定矩形右下角的逻辑X坐标。nBottomRect:指定矩形右下角的逻辑Y坐标。返回值:如果函数调用成功,返回值非零,否则返回值为0。6、椭圆Ellipse函数功能:该函数画一个椭圆形,用当前的画笔画矩形轮廓,用当前画刷进行填充。函数原型:BOOLEllipse(HDChdc,intx1,inty1,intx2,inty2)参数:hdc:设备环境句柄。x1:指定椭圆形左上角的逻辑X坐标。y1:指定椭圆形左上角的逻辑Y坐标。x2:指定椭圆形右下角的逻辑X坐标。y2:指定椭圆形右下角的逻辑Y坐标。返回值:如果函数调用成功,返回值非零,否则返回值为0。7、其它(参考MSDN)四、举例(见代码)本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/eaglewood2005/archive/2009/04/16/4076392.aspx

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭