gdi 编程c语言pdf,二、Windows编程GDI—TextOut细节
TextOut是用于顯示文字的最常用的GDI函數(shù)。語(yǔ)法是:
TextOut (hdc, x, y, psText, iLength) ;
以下將詳細(xì)地討論這個(gè)函數(shù)。
第一個(gè)參數(shù)是設(shè)備內(nèi)容句柄,它既可以是GetDC的傳回值,也可以是在處理WM_PAINT消息時(shí)BeginPaint的傳回值。
設(shè)備內(nèi)容的屬性控制了被顯示的字符串的特征。例如,設(shè)備內(nèi)容中有一個(gè)屬性指定文字顏色,內(nèi)定顏色為黑色;內(nèi)定設(shè)備內(nèi)容還定義了白色的背景。在程序向顯示器輸出文字時(shí),Windows使用這個(gè)背景色來(lái)填入字符周?chē)木匦慰臻g(稱(chēng)為「字符框」)。
該文字背景色與定義窗口類(lèi)別時(shí)設(shè)置的背景并不相同。窗口類(lèi)別中的背景是一個(gè)畫(huà)刷,它是一種純色或者非純色組成的畫(huà)刷,Windows用它來(lái)擦除顯示區(qū)域,它不是設(shè)備內(nèi)容結(jié)構(gòu)的一部分。在定義窗口類(lèi)別結(jié)構(gòu)時(shí),大多數(shù)Windows應(yīng)用程序使用WHITE_BRUSH,以便內(nèi)定設(shè)備內(nèi)容中的內(nèi)定文字背景顏色與Windows用以擦除顯示區(qū)域背景的畫(huà)刷顏色相同。
psText參數(shù)是指向字符串的指針,iLength是字符串中字符的個(gè)數(shù)。如果psText指向Unicode字符串,則字符串中的字節(jié)數(shù)就是iLength值的兩倍。字符串中不能包含任何ASCII控制字符(如回車(chē)、換行、制表或退格),Windows會(huì)將這些控制字符顯示為實(shí)心塊。Text0ut不識(shí)別作為字符串結(jié)束標(biāo)志的內(nèi)容為零的字節(jié)(對(duì)于Unicode,是一個(gè)短整數(shù)型態(tài)的0),而需要由nLength參數(shù)指明長(zhǎng)度。
TextOut中的x和y定義顯示區(qū)域內(nèi)字符串的開(kāi)始位置,x是水平位置,y是垂直位置。字符串中第一個(gè)字符的左上角位于坐標(biāo)點(diǎn)(x,y)。在內(nèi)定的設(shè)備內(nèi)容中,原點(diǎn)(x和y均為0的點(diǎn))是顯示區(qū)域的左上角。如果在TextOut中將x和y設(shè)為0,則將從顯示區(qū)域左上角開(kāi)始輸出字符串。
當(dāng)您閱讀GDI繪圖函數(shù)(例如TextOut)的文件時(shí),就會(huì)發(fā)現(xiàn)傳遞給函數(shù)的坐標(biāo)常常被稱(chēng)為「邏輯坐標(biāo)」。在第五章會(huì)詳細(xì)地解釋這種情況。現(xiàn)在請(qǐng)注意,Windows有許多「坐標(biāo)映像方式」,它們用來(lái)控制GDI函數(shù)指定的邏輯坐標(biāo)轉(zhuǎn)換為顯示器的實(shí)際圖素坐標(biāo)的方式。映像方式在設(shè)備內(nèi)容中定義,內(nèi)定映像方式是MM_TEXT(使用WINGDI.H中定義的標(biāo)識(shí)符)。在MM_TEXT映像方式下,邏輯單位與實(shí)際單位相同,都是圖素;x的值從左向右遞增,y的值從上向下遞增(參看圖4-2)。MM_TEXT坐標(biāo)系與Windows在PAINTSTRUCT結(jié)構(gòu)中定義無(wú)效矩形時(shí)使用的坐標(biāo)系相同,這為我們帶來(lái)了很多方便(但是,其它映像方式并非如此)。
設(shè)備內(nèi)容也定義了一個(gè)剪裁區(qū)域。您已經(jīng)看到,對(duì)于從GetDC取得的設(shè)備內(nèi)容句柄,內(nèi)定剪裁區(qū)域是整個(gè)顯示區(qū)域;而對(duì)于從BeginPaint取得的設(shè)備內(nèi)容句柄,則為無(wú)效區(qū)域。Windows不會(huì)在剪裁區(qū)域之外的任何位置顯示字符串。如果一個(gè)字符有一部分在剪裁區(qū)域外,則Windows將只顯示此區(qū)域內(nèi)的那部分。要想將輸出寫(xiě)到窗口的顯示區(qū)域之外不是那么容易的,所以不用擔(dān)心會(huì)無(wú)意間出現(xiàn)這種事情。
總結(jié)
以上是生活随笔為你收集整理的gdi 编程c语言pdf,二、Windows编程GDI—TextOut细节的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: eclipse adt for linu
- 下一篇: 月日均存款怎么算