欢迎来到天天文库
浏览记录
ID:45100143
大小:409.84 KB
页数:10页
时间:2019-11-09
《《WIN编程入门GDI》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第二部分Win32SDK编程在Windows应用程序中,图形与文本都是通过图形设备接口,简称GDI(GraphicsDeviceInterface),以图形形式来处理的。GDI是Windows的子系统,它负责在视讯显示器和打印机上显示图形。GDI是Windows非常重要的部分。要在窗口的显示区域绘图,可以使用Windows的图形设备接口(GDI)函数。从程序写作者的观点来看,GDI由几百个函数调用和一些相关的数据类型、宏和结构组成。Windows提供了用于将字符串输出到窗口的显示区域内TextOut等。该函数的格式如下:BOOLTextOut(HDChdc,//handletodevi
2、cecontextintnXStart,//x-coordinateofstartingpositionintnYStart,//y-coordinateofstartingpositionLPCTSTRlpString,//pointertostringintcbString//numberofcharactersinstring);GDI简介设备内容(简称为「DC」):句柄只不过是一个数值,Windows以它在内部使用对象。程序写作者从Windows取得句柄,然后在其它函数中使用该句柄。设备内容句柄是GDI函数的窗口「通行证」,有了这种设备内容句柄,程序写作者就能自如地在显示区域上
3、绘图。实际上DC是GDI内部保存的数据结构。设备内容与特定的显示设备(如视讯显示器或打印机)相关。对于显示器,设备内容总是与显示器上的特定窗口相关。设备内容中的有些值是图形「属性」,这些属性定义了GDI绘图函数工作的细节。例如,对于TextOut,设备内容的属性确定了文字的颜色、文字的背景色、x坐标和y坐标映像到窗口的显示区域的方式,以及显示文字时Windows使用的字体。当程序需要绘图时,它必须先取得设备内容句柄。在取得了该句柄后,Windows用内定的属性值填入内部设备内容结构。在后面的章节中您会看到,可以通过呼叫不同的GDI函数改变这些默认值。利用其它的GDI函数可以取得这些属性
4、的目前值。当然,还有其它的GDI函数能够在窗口的显示区域真正地绘图。当程序在显示区域绘图完毕后,它必须释放设备内容句柄。句柄被程序释放后就不再有效,且不能再被使用。程序必须在处理单个消息处理期间取得和释放句柄。除了呼叫CreateDC(函数,在本章暂不讲述)建立的设备内容之外,程序不能在两个消息之间保存其它设备内容句柄。GDI简介--HDC取得设备内容句柄的方法:HDChdc;hdc=BeginPaint(HWNDhwnd,LPPAINTSTRUCTlpPaint);Dosomedrawingwithhdc;EndPaint(HWNDhwnd,CONSTPAINTSTRUCTlpPai
5、nt);以上只能用于WM_PAINT消息响应中;hdc=GetDC(HWNDhwnd);Dosomedrawingwithhdc;ReleaseDC(HWNDhwnd,HDChdc);以上用于非WM_PAINT消息响应中GDI简介--HDC设置字体颜色:COLORREFSetTextColor(HDChdc,//handletodevicecontextCOLORREFcrColor//textcolor);设置背景色:COLORREFSetBkColor(HDChdc,//handleofdevicecontextCOLORREFcrColor//backgroundcolorval
6、ue);设置对其方式:UINTSetTextAlign(HDChdc,//handletodevicecontextUINTfMode//text-alignmentflag);GDI简介--字体字体参数:BOOLGetTextMetrics(HDChdc,//handletodevicecontextLPTEXTMETRIClptm//pointertotextmetricsstructure);typedefstructtagTEXTMETRIC{LONGtmHeight;LONGtmAscent;LONGtmDescent;LONGtmInternalLeading;LONGtm
7、ExternalLeading;LONGtmAveCharWidth;LONGtmMaxCharWidth;其它结构字段}TEXTMETRIC,*PTEXTMETRIC;GDI简介--字体GDI简介--字体字体参数:GDI简介--字体字体参数:TEXTMETRICtm;caseWM_CREATE:hdc=GetDC(hwnd);//获得字体参数GetTextMetrics(hdc,&tm);cxChar=tm.tmAveCharWidth;cy
此文档下载收益归作者所有