vc第5章 文字與字體.ppt_第1頁(yè)
vc第5章 文字與字體.ppt_第2頁(yè)
vc第5章 文字與字體.ppt_第3頁(yè)
vc第5章 文字與字體.ppt_第4頁(yè)
vc第5章 文字與字體.ppt_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第5章文本和字體、內(nèi)容提要、設(shè)置文本的設(shè)備環(huán)境文本的輸出過(guò)程文本操作示例、5.1 .設(shè)置文本的設(shè)備環(huán)境、1 .相關(guān)的基本概念、Windows中顯示的所有內(nèi)容,在某種意義上都可以視為利用GDI的圖形實(shí)體文本輸出使用預(yù)定義的特殊圖形元素字體集。 字體表示顯示的文本的大小、類型和輪廓。 Windows系統(tǒng)提供了7種基本字體,用戶可以創(chuàng)建新字體。 文本操作要點(diǎn):設(shè)置獲取文本句柄的字體、字符大小、字符顏色等屬性,并在設(shè)備環(huán)境中選擇這些屬性。 2.Windows提供的7種基本字體ANSI_FIXEDANSI標(biāo)準(zhǔn)的固定寬度字體ANSI_VARANSI標(biāo)準(zhǔn)的可變寬度字體DEFAULT_GUI當(dāng)前GUI的默認(rèn)字體OEM_FIXED是, 標(biāo)準(zhǔn)OEM制造商提供的DEVICE_DEFAULT當(dāng)前圖形設(shè)備的字體提供SYSTEM_FIXEDWindows的標(biāo)準(zhǔn)固定寬度的字體SYSTEMWindows提供的可變寬度的字體是, 始終作為默認(rèn)字體Win使用,3 .選擇系統(tǒng)字體的步驟,(1)字體句柄變量:定義hfont HF/HF是字體的句柄(2)調(diào)用函數(shù)GetStockObject是移位的系統(tǒng)默認(rèn)字體返回hF=getstockobject () (3)調(diào)用函數(shù)SelectObject為設(shè)備環(huán)境SelectObject(hdc,HF )選擇字體.4 .創(chuàng)建自定義字體,函數(shù)cre HFont=CreateFont(intnHeight,/字體高度,0采用系統(tǒng)的默認(rèn)值,使用邏輯單位intnWidth,/字體寬度,0表示最佳寬高比的值intnEscapement, 每/行文本相對(duì)于頁(yè)面下方的角度,單位為0.1度intnOrientation,/每行文本相對(duì)于頁(yè)面下方的角度單位為0.1度nWeight,/字體的粗細(xì),值的范圍為01000DWORDDwltalic, /字體傾斜時(shí)為DWORDdwUnderline,/帶下劃線時(shí)為DWORDdwStrikeout,/帶刪除線時(shí)為0,DWORDdwCharset /字體所屬的字符集dworddwoutprecision,/輸出精度, 默認(rèn)值out _ default _ precisdworddwclipprecision,/剪裁精度,默認(rèn)值clip _ default _ precisdwordwquality,/輸出質(zhì)量默認(rèn)值default _ qualitydw /字體斜率和字體系列,默認(rèn)值defaul _ pitchdwordlpszfcacename/字體名稱; 可選的系統(tǒng)字符集: ansi _ charset OEM _ charset symbol _ charset default _ charset shift jis _ charset,crColor是設(shè)定的顏色,字體和背景色,字體顏色函數(shù): se 背景色函數(shù)的設(shè)定: SetBkColor(hdc,crColor ),5.2 .文本的輸出過(guò)程,1 .文本的輸出步驟,獲取字體信息確定格式化的文本,換行時(shí)調(diào)用文本坐標(biāo)調(diào)用函數(shù)輸出文本,2 .獲取字體信息后輸出文本調(diào)用GetTextMetrics ()字體信息GetTextMetrics(hdc,/字符高度LONGtmAscent; /文字基線以上的高度LONGtmDescent; /字符基線以下的高度LONGtmInternalLeading; tmHeight的值中包含的垂直大小通常被幾個(gè)大寫(xiě)的注音符號(hào)占據(jù)。長(zhǎng)周期性地讀取; /行間的間隔LONGtmAveCharWidth; /平均文字寬度LONGtmMaxCharWidth; /最大字符寬度LONGtmWeight; /文字的粗細(xì)LONGtmOverhang; /添加到復(fù)合字體之間的寬度LONGtmDigitizedAspectX; /為輸出設(shè)備設(shè)計(jì)的x軸尺寸LONGtmDigitizedAspectY; /為輸出設(shè)備設(shè)計(jì)的y軸尺寸BCHARtmFirstChar; /字體的第一個(gè)字符值BCHARtmLastChar; /字體的最后一個(gè)字符值BCHARtmDefaultChar; /代替字體中沒(méi)有的字符BCHARtmBreakChar,作為/分隔符的BYTEtmItalic; /0以外為斜體的bytetionmundlined; /0以外表示帶下劃線的bytetmstruckout/0以外表示帶刪除線的BYTEtmPitchAndFamily字體間隔和字體系列BYTEtmCharSet; /字符集TEXTMETRIC,bolgettextextendntpoint 32 (hdcdc,LPCTSTRlpszString,/指定字符串intnLength,/字符串中的字符數(shù)LPSIZElpSize/是加上字符串寬度和高度的SIZE SIZE數(shù)據(jù)結(jié)構(gòu)的定義typedefstructtagsize 長(zhǎng)CX; 龍珠; SIZE; 3 .格式化文本,確定后續(xù)文本坐標(biāo),以由函數(shù)GetTextExtentPoint32獲取當(dāng)前字符串的寬度,并將該寬度與SIZE共存。 并確保換行時(shí)文本坐標(biāo)指向tm的TEXTMETRICS結(jié)構(gòu)具有字符高度tmHeight行間隔tmExternalLeading。 對(duì)于換行符,新行中文本的y坐標(biāo)的增量值為cy=TM.tmheighttm.tmexternalillading;3 .文本輸出,常用的文本輸出函數(shù)TextOut,原型是BOOLTextOut(HDChdc、intX、intY、/字符串的開(kāi)始坐標(biāo)LPCTSTRlpstring,/顯示的字符串intnCount/字符串的字節(jié)數(shù)); 字符串長(zhǎng)度獲取intlstrlen(LPCTSTRlpString ),數(shù)字轉(zhuǎn)換字符串,char itoa (長(zhǎng)值,char*str,int radix )值轉(zhuǎn)換的值(整數(shù)) str結(jié)果字符串radix數(shù)字基礎(chǔ)(2-36)itoa(50,buf,10) intsprintf(char*buffer,const char *格式,argument ); 包含stdio.hs打印(buf, (%d,%d)n ,x,y );5.3 .文本操作示例【例5-1】在用戶窗口中輸出幾行字符串,每次窗口接收到WM_PAINT消息時(shí)顯示的文本都會(huì)更新。# include # includelongwinapiwndproc (hwnd hwnd,UINTiMessage,UINTwParam,long lparam ) bolinitwingdowsclass (hinstance h ,/主函數(shù)intwinapiwinmain (hinstance hinstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,int ncmdshow ) msg消息; PS (! initwindows類(hinstance ) )返回假; PS (! InitWindows(hInstance,ncmdshow ) )返回假; while(GetMessage(,/消息處理函數(shù)longWINAPIWndProc(HWNDhWnd,UINTiMessage,UINTwParam,LONGlParam)staticlongnXChar,nCaps,ny c HDChDC; /定義設(shè)備上下文的句柄shortx的TEXTMETRICtm; shortLnCount=6; PAINTSTRUCTPtStr; /包含繪圖信息的結(jié)構(gòu)變量static char * text buf = thisisthefrstline , Thisisthesecondline , thisisthefourthline , Thisisthefifthline , Thisisthefifthline , this 輸出的文本內(nèi)容、交換機(jī)(imessage )/處理消息caseWM_CREATE:/處理窗口創(chuàng)建消息hDC=GetDC(hWnd ); /當(dāng)前設(shè)備表句柄GetTextMetrics(hDC,、bolintwindosclass (hinstance hinstance ) /初始化窗口類WNDCLASSWndClass; wndclass.style=cs _ Hg redraw|cs _ VC redraw; returnRegisterClass(、bolinitwindos (hinstance hinstance,intnCmdShow)/初始化窗口HWNDhWnd; hWnd=CreateWindow(WinText ,/生成窗口文本顯示示例程序、WS_OVERLAPPEDWINDOW, NULL; PK (! hwnd )返回假; hWndMain=hWnd; 顯示顯示窗口(hwnd,nCmdShow) /窗口更新窗口(hwnd )的返回真; 本程序?yàn)榱苏f(shuō)明在窗口的用戶區(qū)域中將文本格式化后輸出的方法,在窗口內(nèi)各顯示5行文本。、26、# include # includelresultcallbackwndpro (hwnd,UINT PS PS S; WNDCLASSwndclass; charlpszClassName=文本輸出; charlpsztitle = exampleforthetextoutput ; wndclass.style=0; wndclass.lpsz類name=lpsz類name; PS (! 注冊(cè)類(,lresultcallbackwndproc (hwnd hwnd,UINTmessage,WPARAMwParam,lparamram)hdcdc; HFONThF_black,hF_big;/定義兩種字體句柄PAINTSTRUCTps的TEXTMETRICtm; 定義TEXTMETRIC結(jié)構(gòu),字體信息charlpsz_1=“這是紅色,字體表示SYSTEM_FONT的文字,紅色表示未來(lái)”=“現(xiàn)在顯示的是自定義字體,顏色是綠色,綠色是活的; charlpsz_4=“現(xiàn)在的字體很大,是斜體帶下劃線的文字”charlpsz_4=“現(xiàn)在掌握字體的操作了嗎? “ charlpsz_6=“祝你成功! ”、intX=0、Y=0; SIZEsize; SIZE類型的結(jié)構(gòu)hF_black=CreateFont/創(chuàng)建自定義字體“粗體”(20,/字體高度為0,/最佳寬高比寬度為0,/文本斜率為0,水平0,/字體斜率為0FW_HEAVY,/字體/無(wú)下劃線0/無(wú)刪除線ANSI_CHARSET,/ansi_charset字符集OUT_DEFAULT_PRECIS,/輸出精度為默認(rèn)精度CLIP_DEFAULT_PRECIS,/裁剪精度為默認(rèn)精度default _ q /輸出質(zhì)量為默認(rèn)值DEFAULT_PITCH|FF_DONTCARE,/字符間隔和字體系列為默認(rèn)值“粗體”/字體名稱; hF_big=CreateFont/新字體“大寫(xiě)”(30,/字體高度0,0,0,F(xiàn)W_NORMAL,1,/斜體1,/下劃線0,ANSI_CHARSET,/要使用的字符集out _ default _ pre 交換機(jī)(消息) case WM _ paint : hdc=beginpaint (hwnd,/輸出文本3,X=0; /計(jì)算下一行的起始坐標(biāo)y=YTM.TM height 20 * TM.tmexternalillading的選擇對(duì)象(hdc,hF_big) /自定義字體hF_bigSetTextColor(hdc,RGB (155 ) /成套文本的顏色為灰色y=YTM.TM height 20 * TM.tmexternalillading; 增加/Y坐標(biāo),生成文本(hdc,x,y,lpsz_4,strlen(lpsz_4) ); /輸出文本4SetTextColor(hdc,RGB (255,0,0 ) ); /將文本顏色設(shè)為紅色x=0/下一行的坐標(biāo)y=YTM.

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論