锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 鍙﹀錛寃xWidgets鍜孮t闄や簡瀵逛簬涓浜涘父瑙佸簲鐢紝姣斿紿楀彛銆丏C鐨勫皝瑁呬箣澶栵紝榪樻彁渚涗簡寰堝緋葷粺鎺ュ彛鐨勫皝瑁咃紝姣斿clipboard, thread, socket絳夈?/p>
Qt鏈塓t Creator浣滀負(fù)IDE錛屽伐紼嬮」鐩枃浠跺彲浠ヨ法騫沖彴錛屽彟澶栵紝宸ョ▼鏂囦歡涔熷彲浠ョ敤qmake杞垚騫沖彴鏃犲叧鐨刴akefile銆傚噯澶囨渶榪戞湁絀鴻瘯璇昋t錛屼釜浜鴻寰楀晢涓氫唬鐮佽川閲忚繕鏄紼嶅井濂戒竴浜涖?/p>
鍥炲 鏇村璇勮
鐣岄潰搴撳悕縐?br>
鎺ュ彛璁捐
鐣岄潰緙栬緫鍣?br>
楂樼駭甯冨眬鍔熻兘
騫抽潰緇樺埗
騫沖彴鍏煎鎬?br>
璇█鏀寔
IDE鍏煎鎬?br>
瑙嗗浘-妯″瀷鍒嗙鏈哄埗
榪愯鏃?br>
鍏跺畠
Windows Forms
鎺ュ彛浼樼銆侰++涓嬩嬌鐢–LI鎵╁睍錛屽叾瀹冭璦涓哄師鐢熸敮鎸併?br>
鐣岄潰緙栬緫鍣ㄥ畬鏁達紝鍖呮嫭甯冨眬銆佸睘鎬с佹秷鎭叧鑱旂殑瀹屾暣璁劇疆銆備笉鍙瑙堛?br>
Table Layout錛孲plitter Layout錛孎low Layout絳夛紝Anchor鍜孌ock鏈哄埗銆傚鍒嗚鯨鐜囩晫闈笅琛ㄧ幇鑹ソ銆?br>
GDI+錛岄潰鍚戝璞$殑2D緇樺埗鎺ュ彛錛屼嬌鐢ㄧ畝渚褲?br>
闇瑕?Net騫沖彴鏀寔銆俉Indows鎴朙inux錛圡ono錛岄潪瀹樻柟鏀寔錛夛紝鏀寔Windows CE
C++/CLI, 鏀寔.net鐨勮璦銆?br>
浠匳S銆?br>
甯冨眬鍜岃鍥炬柟妗堝緩绔嬪湪浠g爜涓傞儴鍒嗙粍浠舵敮鎸丮odel-View鏋舵瀯銆?br>
闇瑕侀儴緗插搴旂殑.net
鍟嗕笟鍗忚
MFC
鍩轟簬瀹忓拰铏氬嚱鏁幫紝浣跨敤鐗規(guī)畩鏍煎紡娉ㄩ噴錛屼嬌鐢ㄨ嚜瀹氫箟鐨凴TTI緋葷粺銆傜被鎺ュ彛璁捐浼樿壇銆傞氳繃鍥炶皟鍑芥暟鍜岃櫄緇ф壙閲嶈澆璋冪敤瀹㈡埛浠g爜銆?br>
鍩轟簬璧勬簮緙栬緫鍣紝浠呰兘瀵圭┖闂村熀鏈竷灞鍜屽皯閲忓睘鎬ц繘琛岃皟鏁淬備笉鍙瑙堛?br>
緙轟箯楂樼駭甯冨眬鍔熻兘錛屽鍒嗚鯨鐜囬渶瑕佹槸鎵嬪伐鎴栫▼搴忎腑璋冩暣銆?br>
GDI鍙奊DI灝佽錛屽彲閫塆DI+
Windows錛學(xué)indows CE
C++ Only錛?br>鏀寔COM鏃跺彲浠ュ疄鐜癇inary綰у埆澶嶇敤銆?br>
浠匳isual Studio
浣跨敤璧勬簮淇濆瓨鎺т歡鐨勫熀鏈帶浠跺竷灞錛屾彁渚汥oc-View鏈哄埗鍜屾帶浠舵暟鎹氦鎹㈡敮鎸佽鍥懼垎紱匯?br>
闇瑕侀儴緗睲FC榪愯鏃跺簱銆?br>
鍟嗕笟鍗忚
WTL
鍩轟簬妯℃澘鍜岃櫄鍑芥暟銆傜被鎺ュ彛綾諱技浜嶮FC銆傞渶瑕佷嬌鐢ㄥ閲嶇戶鎵褲傞氳繃妯℃澘鐗瑰寲鍜屽洖璋冨嚱鏁頒笌瀹㈡埛浠g爜浜や簰銆?br>
鍚孧FC
鍚孧FC
鍚孧FC
鍚孧FC
鍚孧FC錛屽COM鐨勬敮鎸佹瘮MFC瀹屽杽寰堝銆?br>
Visual Studio錛學(xué)indows涓嬫敮鎸佹爣鍑嗙殑C++緙栬瘧鍣ㄣ?br>
浣跨敤璧勬簮鏂囦歡淇濆瓨絀洪棿甯冨眬銆?br>
鏃?br>
鑷敱鍗忚
wxWidget
瀹忥紝鑷畾涔塕TTI銆備嬌鐢ㄥ洖璋冨嚱鏁頒笌鐢ㄦ埛浠g爜浜や簰銆?br>
鏃犲畼鏂圭晫闈㈢紪杈戝櫒銆傚彲浣跨敤絎笁鏂圭晫闈㈢紪杈戝櫒銆傞儴鍒嗙紪杈戝櫒鍏鋒湁瀹屾暣鐨勬墍瑙佸嵆鎵寰楀姛鑳斤紝涓斿叿鏈夐瑙堣兘鍔涖?br>
浣跨敤Sizer瀹炵幇澶氬垎杈ㄧ巼鐨勫竷灞銆傚姛鑳藉亸寮便?br>
wxDC絳夈?br>
Windows錛孡inux錛孶nix錛孧acOS絳?br>
C++, .NET, Python,
Lua,
Ruby絳?br>鑹ソ鐨勭紪璇戝櫒鍏煎鎬э紝緙轟箯IDE緇ф壙銆?br>
鍙互灝嗙晫闈㈠睘鎬х敓鎴愬埌浠g爜涓紝涔熷彲浠ヤ嬌鐢╔ML鏍煎紡淇濆瓨銆?br>
wx鐨勫姩鎬侀摼鎺ュ簱鎴栭潤鎬侀摼鎺ャ?br>
鑷敱鍗忚
Qt
浣跨敤瀹忓拰鑷畾涔夌殑RTTI銆備嬌鐢⊿ingal-Slot鏈哄埗瀹炵幇鐢ㄦ埛浠g爜浜や簰銆傚彲閫氳繃緇ф壙瀹炵幇鎵╁睍銆?br>
Qt Designer錛屽叿澶囧畬鏁寸殑鎵瑙佸嵆鎵寰楃紪杈戝姛鑳姐傚彲棰勮鐣岄潰銆?br>
鍏峰瀹屾暣鐨勫竷灞鍔熻兘銆傚鍒嗚鯨鐜?澶氬鉤鍙頒笅琛ㄧ幇鑹ソ銆?br>
QCanvas絳夈?br>
Windows錛孡inux錛孶nix錛孧acOS絳夈?br>
C++錛孭ython絳?br>
鍙泦鎴愬埌Eclipse鍜孷S
浣跨敤璧勬簮鏂囦歡淇濆瓨鐣岄潰淇℃伅銆傞儴鍒嗙粍浠跺叿澶嘙odel-View-Delegate鏋舵瀯
qt鐨勫姩鎬侀摼鎺ュ簱銆?br>
寮婧愬崗璁?鍟嗕笟鍗忚
GTK+
浣跨敤signal-slot鏈哄埗瀹屾垚鐢ㄦ埛浠g爜浜や簰銆?br>
GLADE錛屽叿澶囨墍瑙佸嵆鎵寰楃殑鐣岄潰緙栬緫鍔熻兘
Layout Containers錛屽叿澶囪緝瀹屾暣鐨勫竷灞鑳藉姏銆?br>
GTK Graphics Context
Windows錛孡inux錛孶nix錛孧acOS絳夈?/td>
C錛孋++錛孭ython錛?NET絳夈?br>
錛堟殏鏃舵湭鐭ワ級
浣跨敤浠g爜瀹屾垚鐣岄潰璁劇疆銆傞儴鍒嗙粍浠跺叿澶嘙odel-View鏋舵瀯銆?br>
GTK Runtime
寮婧愬崗璁?br>
# re: C++涓媁indows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 闈炲畼鏂圭患鍚堟瘮杈?2009-01-06 19:05 qtopia
Nokia 鏈榪戞帹浜?Qt Creator錛屾槸杈冨ソ鐨処DE鐜 鍥炲 鏇村璇勮
# re: C++涓媁indows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 闈炲畼鏂圭患鍚堟瘮杈?2009-01-06 19:05 t
鍗氫富榪樺彲浠ュ鍔犱竴鏍?#8220;鍥介檯鍖栨敮鎸?#8221; 鍥炲 鏇村璇勮
# re: C++涓媁indows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 闈炲畼鏂圭患鍚堟瘮杈僛鏈櫥褰昡 2009-01-08 12:48 kenlistian
鎴戣寰梬xwidget鏄笉閿欑殑閫夋嫨銆?nbsp; 鍥炲 鏇村璇勮
# re: C++涓媁indows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 闈炲畼鏂圭患鍚堟瘮杈?2009-01-11 20:25 www
wxwidget鍋氱畝鍗曠殑榪樺彲浠? 鍋氬鏉傜殑鐣岄潰,鍢垮樋,閭e氨楹葷儲浜? win涓嬭繕鏄疢FC鏈鐖? 鍥炲 鏇村璇勮
# re: C++涓媁indows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 闈炲畼鏂圭患鍚堟瘮杈?2009-01-19 00:49 ArenAK
鏈夋病鏈夊摢涓涓槸浣滆呮瘮杈冨枩嬈㈢敤鐨勫憿錛屽強鍏跺師鍥狅紵 鍥炲 鏇村璇勮
# re: C++涓媁indows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 闈炲畼鏂圭患鍚堟瘮杈僛鏈櫥褰昡 2009-01-19 16:35 鍏按
鍐欑殑濂絶 鍥炲 鏇村璇勮
# re: C++涓媁indows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 闈炲畼鏂圭患鍚堟瘮杈?2009-02-05 11:08 絀烘槑嫻佽漿
@鍏按
鎴戝氨鐭ラ亾浣犳槸鍙嬫儏璧炲姪鐨勩傘傘?nbsp; 鍥炲 鏇村璇勮
# re: C++涓媁indows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 闈炲畼鏂圭患鍚堟瘮杈僛鏈櫥褰昡 2009-02-11 22:35 鍏按
榪欎綘涔熺煡閬擄紵 鍥炲 鏇村璇勮
# re: C++涓媁indows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 闈炲畼鏂圭患鍚堟瘮杈?2009-02-25 10:19 aladdina
wxWidgets鐨勪唬鐮佽川閲忎笉鏄緢楂橈紝鏈変竴浜涙瘮杈冨垵綰х殑bug銆傛垜鐢ㄨ繃涓孌墊椂闂寸殑wxWidgets錛岃嚜宸辨祴璇曟病闂錛屼絾鏄敤鎴鋒諱細鍙戝洖涓浜沜rash report銆?/p>
# re: C++涓媁indows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 闈炲畼鏂圭患鍚堟瘮杈?2009-09-18 12:09 idol
gtk 鍝湁 signal-slot鏈哄埗錛岀敤鐨勬槑鏄庢槸 callbacks 鍥炲 鏇村璇勮
銆銆鍖呮嫭鐜板湪錛屾湁寰堝娓告垙閮借繕鏄嬌鐢ㄧ殑鐐歸樀瀛楀簱銆傚洜涓烘搷浣滆搗鏉ユ瘮杈冩柟渚匡紝鍔犱笂榪欐柟闈㈢殑緇忛獙宸茬粡縐瘡浜嗗ソ鍑犲勾浜嗐傞氬父濡傛灉鍙槸涓縐嶅瓧浣撳氨鍙互婊¤凍闇瑕佺殑璇濓紝瀹冧細鏄竴涓瘮杈冨ソ銆佸揩鐨勮В鍐沖姙娉曘備絾鏄畠鏈?涓己鐐?
1. 濡傛灉鏀懼ぇ鏄劇ず錛屼笉鍋氬鐞嗙殑璇濓紝鏄劇ず鍑烘潵鐨勬眽瀛楋紝鏄緢闅劇湅鐨勩?br>2. 鍍忔槸UCDOS鎵鎻愪緵鐨勭偣闃靛瓧搴擄紝鍙湁24鐐歸樀鐨勬湁鍑犵瀛椾綋錛屽錛氬畫浣撱侀粦浣撱佹彥浣?#8230;錛岃?6鐐歸樀鐨勫ソ璞″氨鍙湁瀹嬩綋涓縐嶃?br>3. 鐐歸樀瀛楀簱錛岄氬父鏄湁鐗堟潈鐨勶紝灝ゅ叾鏄涓夋柟鍒朵綔鐨勬眽瀛楀簱錛堝錛氭柟姝o級銆?br>銆銆鍦ㄨ繖鏍風(fēng)殑鎯呭喌涓嬶紝褰撴垜浠啓濂借繖鏍風(fēng)殑涓涓樉紺哄嚱鏁幫紝灝辯畻鏄В鍐充簡濡傦細鏀懼ぇ銆佸揩閫熸樉紺虹瓑闂鐨勮瘽錛屽彲渚涢夋嫨鐨勫瓧浣撹繕鏄お榪囦簬灞闄愪簡銆傛墍浠ワ紝鍦ㄥ瓧浣撶殑瑕佹眰姣旇緝寮虹殑鎯呭喌涓嬶紝鐐歸樀瀛楀簱騫朵笉鏄竴涓ソ鐨勮В鍐蟲柟娉曪紝浠栦笉澶熺伒媧匯傚敖綆℃垜浠浜庡畠鐨勬搷浣滄槸濡傛寰楃啛緇冿紝鍙互鍐欏嚭浼樼編鐨勪唬鐮佹潵灞曠ず鎴戜滑鐨勭紪紼嬫妧宸с?/font>
TTF
銆銆TTF鏄疶rue Type Font鐨勭畝縐般傚湪Windows\Fonts鐩綍涓嬮潰錛屾垜浠彲浠ョ湅鍒拌澶氬悗緙涓簍tf鐨勬枃浠訛紝瀹冨氨鏄帴涓嬫潵鎴戜滑鎺ヤ笅鏉ユ墍瑕佽皥鍒扮殑銆?br>銆銆TTF鏄竴縐嶇煝閲忓瓧搴撱傛垜浠粡甯稿彲浠ュ惉鍒扮煝閲忚繖涓瘝錛屽儚鏄疐LASH涓殑鐭㈤噺鍥懼艦錛屽湪100*100鍒嗚鯨鐜囦笅鍒朵綔鐨刦lash錛屽氨綆楀畠鏀懼ぇ涓哄叏灞忥紝鏄劇ず鍑虹殑鐢婚潰涔熶笉浼氬嚭鐜伴┈璧涘厠銆傛墍璋撶煝閲忥紝鍏跺疄璇寸櫧浜嗗氨鏄敤鐐瑰拰綰挎潵鎻忚堪鍥懼艦錛岃繖鏍鳳紝鍦ㄥ浘褰㈤渶瑕佹斁澶х殑鏃跺欙紝鍙鎶婃墍鏈夎繖涓浘褰㈢殑鐐瑰拰綰挎斁澶х浉搴旂殑鍊嶆暟灝卞彲浠ヤ簡銆傝屼笖錛屽湪緗戠珯涓婃湁寰堝鐨凾TF瀛楀簱鍙互涓嬭澆錛屾垨鑰呬綘鍙互鍘諱拱涓浜涗笓闂ㄧ殑瀛楀簱鍏夌洏銆傜劧鍚庡湪浣犲彂琛屼綘綺懼績鍒朵綔鐨勬父鎴忔椂錛屽彲浠ラ『渚挎崕涓婅繖浜涘悗緙涓?ttf 鐨勬枃浠跺氨琛屼簡銆傚寘鎷琎uake榪欐牱鐨勬儕涓栦箣浣滐紝涔熼兘鏄敤鐨凾TF瀛楀簱銆?br>銆銆榪欐牱錛屾垜浠氨鍙互瑙e喅鐐歸樀姹夊瓧鐨勪竴浜涢棶棰樸傞氳繃TTF錛屾垜浠湪瀛椾綋鐨勮川閲忓拰瀛楀簱鐨勬暟閲忎笂鑾峰緱浜嗘殏鏃舵х殑鑳滃埄銆?/font>
瀛楀簱鐨勮鍙栧拰鏄劇ず
銆銆鍏堝墠璋堝埌鐐歸樀瀛楀簱錛屽彧闇瑕佸緢綆鍗曠殑涓浜涙搷浣滐紝灝卞彲浠ユ樉紺哄嚭鎯寵鐨勬眽瀛椼備笅闈㈡垜緇欏嚭涓涓鍙杊zk16鐨勫嚱鏁幫紝瀹冮渶瑕佷竴涓猄urface浠ヤ緵鏄劇ず鐢細
銆銆#include <io.h>
銆銆#include <stdio.h>
銆銆#include <conio.h>
銆銆
銆銆// 璇誨彇16x16
銆銆void DispHZ16(int x, int y, BYTE *Str, LPDIRECTDRAWSURFACE surf)
銆銆{
銆銆 const int Mask[] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 };
銆銆 FILE *HzkFp;
銆銆 WORD i, j, k=0, m;
銆銆 WORD HzNum;
銆銆 WORD QuHao;
銆銆 WORD WeiHao;
銆銆 long offset;
銆銆 BYTE dotBuffer[32];
銆銆
銆銆 HzkFp = fopen("HZK16", "rb");
銆銆
銆銆 HzNum = strlen((const char *)Str)/2;
銆銆
銆銆 DDSURFACEDESC ddsd;
銆銆 LPWORD lpSurface;
銆銆 HRESULT ddrval;
銆銆
銆銆 ddsd.dwSize = sizeof(ddsd);
銆銆
銆銆 while((ddrval=surf->Lock(NULL, &ddsd, 0, NULL))==DDERR_WASSTILLDRAWING);
銆銆 if(ddrval == DD_OK)
銆銆 lpSurface = (LPWORD)ddsd.lpSurface;
銆銆
銆銆 for(i = 0; i<HzNum; i++)
銆銆 {
銆銆 QuHao = Str[i*2]-160;
銆銆 WeiHao = Str[i*2+1]-160;
銆銆
銆銆 offset = ((QuHao - 1) * 94 + (WeiHao-1))*32;
銆銆
銆銆 fseek(HzkFp, offset, SEEK_SET);
銆銆 fread(dotBuffer, 32, 1, HzkFp);
銆銆
銆銆 for(j=0;j<16;j++)
銆銆 for(k=0;k<2;k++)
銆銆 for(m=0;m<8;m++)
銆銆 if(dotBuffer[j*2+k] & Mask[m])
銆銆 {
銆銆 lpSurface[ddsd.lPitch*(y+j+1) + x+k*8+m] = 0x000000;
銆銆 }
銆銆 x+=16;
銆銆 }
銆銆
銆銆 surf->Unlock(NULL);
銆銆
銆銆 fclose(HzkFp);
銆銆}
銆銆鍏跺疄鍘熺悊寰堢畝鍗曪細
1. 鎵撳紑瀛楀簱
2. 璁$畻瀛楃涓查暱搴︼紙榪欎釜鍑芥暟鍙敮鎸佷腑鏂囷級錛屽茍涓擫ock Surface
3. 渚濇璁$畻鍑烘瘡涓眽瀛楁墍瀵瑰簲鐨勫尯鐮佸拰浣嶇爜錛堟眽瀛楃殑絎?涓瓧鑺傛槸鍖虹爜錛岀2涓瓧鑺傚氨鏄綅鐮侊級錛岀劧鍚庨氳繃鍏紡璁$畻鍑鴻繖涓眽瀛楀湪瀛楀簱涓殑鍋忕Щ閲忥細
offset = ((QuHao - 1) * 94 + (WeiHao-1))*32;
4. 璇誨嚭涓涓?2涓瓧鑺傜殑鐐歸樀
5. 緇樺埗鍒癝urface涓?br>銆銆浠ヤ笂鍙槸16錛?6鐐歸樀瀛楀簱鐨勬樉紺烘柟娉曪紝24錛?4鐨勮鍙栨柟娉曚笌涔嬬被浼鹼紝澶у鍙互鍙傜収鐩稿叧璧勬枡鏉ヤ功鍐欏嚭鑷繁鐨勪唬鐮併?br>銆銆
銆銆濡備綍鏄劇ずTTF瀛楀簱鍛紝鏈夊緢澶氱鎵嬫錛屼笅闈㈡垜鎸変粠綆鍗曞埌澶嶆潅鐨勭殑欏哄簭渚濇浠嬬粛:
1. 浣跨敤Windows API錛屼篃灝辨槸澶у鎵鐔熸?zhèn)夌殑TextOut銆傞氳繃瀹冿紝榪橀渶瑕佷竴涓狧DC錛堣澶囧彞鏌勶級錛屾垜浠氨鍙互闅忔剰鍦板湪灞忓箷浠諱綍鍦版柟鏄劇ず鍑烘枃瀛椾簡銆?br>2. 鍦╤ttp://www.freetype.org錛屾湁涓涓狥reeType鐨勫厤璐瑰簱錛岃屼笖鏄疧penSource鐨勩傚畠鐩墠鏈?涓増鏈細1.0鍜?2.0銆傚叾鍖哄埆鍦ㄤ簬錛?.0鍙兘璇誨彇TTF鏍煎紡鐨勶紝鑰?.0鏀寔鏇村鐨勬枃浠舵牸寮忥紝鍦ㄤ嬌鐢ㄥ畠涔嬪墠璇瘋緇嗛槄璇繪墍瑕侀伒寰殑Licence錛屼互涓嬫槸鎽樿嚜 FreeType2.0瀵瑰瓧搴撶殑鏀寔鍒楄〃錛?br>o TrueType fonts (and collections)
o Type 1 fonts
o CID-keyed Type 1 fonts
o CFF fonts
o OpenType fonts (both TrueType and CFF variants)
o SFNT-based bitmap fonts
o X11 PCF fonts
o Windows FNT fonts
3. 鑷繁鐮旂┒TTF鐨勬牸寮忥紝鐒跺悗鑷繁鏉ユ搷浣溿?br>鏅?br>....... 鈺暜
銆 銆 \鈻?鍊掞紒
銆銆銆 鈼?br>铏界劧鎴戜滑鎯寵鎶婃瘡涓浠朵簨鎯呴兘鍋氬ソ錛屼絾鏄篃涓嶆槸姣忎竴浠朵簨鎯呴兘瑕佷翰鍘嗕翰涓恒傚鏋滀綘闈炶榪欐牱錛屼篃琛宆____^錛屼絾鏄繃涓嶄簡澶氫箙錛屼綘灝變細闄峰叆娉ユ布錛屽埌鏃跺欎綘浼氬彂鐜拌嚜宸辯殑鐑儏姝e湪鎱㈡參琚(鐏紝浠涔堝彨鍋氭姄鐙傦紝鐩鎬俊浣犲緢蹇氨浼氱煡閬揯_^銆?br>
鍦ㄦ湁澶氱閫夋嫨鍙互鍙栬垗鐨勬儏鍐典笅錛屾垜浠渶瑕佽冭檻涓涓嬶紝瀵規(guī)瘮涓涓嬪悇縐嶈В鍐蟲柟娉曠殑浼樺姡銆?br>
銆銆鍦―irectDraw鏃朵唬錛屾垜浠兘涓嶈嚜瑙夊湴鍠滄涓婁簡GetDC錛屽洜涓?#8230;…澶氭柟渚垮晩銆傚彲鏄幇鍦ㄥ凡緇忓埌浜咲irectX8.1鏃朵唬浜嗭紙鎴戣浣垮姴鍦版憞閭d簺榪樻矇閱変簬DirectX7涓紝涓哄浣曞湪浣跨敤alpha鏃舵彁鍗囬偅鍙滅殑1銆?涓猣ps鐨勬湅鍙嬩滑錛氶啋閱掞紝璇ヨ搗搴婁簡錛侊級錛孒DC宸茬粡琚玀$鍒椾負(fù)紱佺敤鍝併傛庝箞鍔炲憿錛熸槸鐨勶紝浣犲彲鑳藉凡緇忔兂鍒頒簡錛屾垜浠繕涓鐩翠繚瀛樼潃紿楀彛鐨刪Wnd鍛紝鍙互閫氳繃瀹冩潵寰楀埌hdc錛屼粠鑰岃皟鐢ㄩ偅浜涢渶瑕乭dc鐨凙PI錛屽彲鏄紝榪欐牱鍋氭槸鏇翠負(fù)鎰氳牏鐨勶紝榪欐牱瀵逛綘鏄病鏈変竴鐐瑰ソ澶勭殑錛屼笉淇★紝浣犲氨璇曡瘯鍚с傛湁涓鍙ヨ瘽錛岃鐗㈣錛氳鎯充綘鐨勬父鎴忔湁鏇村揩鐨勯熷害鐨勮瘽錛岃涓嶈鍐嶅幓紕癏DC浜嗐?br>銆銆鎴戜滑闈炲父娓呮hdc鏄竴涓秴鎱㈢殑瑙e喅鍔炴硶錛屽畠鏃犳硶鍦ㄦ垜浠殑楂橀熸父鎴忎腑婊?0鍒嗗強鏍箋備笅闈㈡潵鐪嬬湅FreeType錛屽畠鏇村儚鏄竴涓猄ervice銆傚畠鐨勮В鍐蟲柟娉曟槸錛屽厛閫氳繃涓緋誨垪鐨勫垵濮嬪寲鍜岃緗紝鍛婅瘔FreeType瀛椾綋鐨勫悕瀛楀拰澶у皬絳夛紝鐒跺悗瀹冧細鍔ㄦ佸湴鐢寵涓涓狦raphic錛屽啀鎶婃垜浠鏄劇ず鐨勫瓧鐢誨埌榪欎釜 Graphic涓婏紝浣犺繕鍙互鎶婂畠淇濆瓨涓簍ga鏍煎紡銆備笉榪囨垜浠渶緇堟墍鎯寵鐨勪笉鏄繖涓紝鎵浠ュ彲鑳芥垜浠繕闇瑕佷粠榪欎釜Graphic涓婇愮偣璇誨彇鎴栬呯敤 CopyRect錛岀劧鍚庡啀鐢誨埌鎴戜滑鐨勭敾闈笂銆傚叾瀹炲畠宸茬粡鏄緢鏂逛究鐨勪簡錛屽彲鏄渶瑕佷綘鍘誨涔?fàn)濡備綍閰嵕|拰浣跨敤瀹冿紝榪欐槸寰堣姳鏃墮棿鐨勪竴浠朵簨鎯咃紝鑰屼笖瀹冩渶澶х殑浼樼偣鏄彲浠ヨ法騫沖彴錛屾垜浠渶瑕佸畠鍚楋紵濡傛灉鏈変竴涓洿涓虹畝鍗曠殑鍔炴硶錛屽儚鏄鏋淭extout涓嶆槸閭d箞鎱㈢殑璇濓紝灝卞ソ浜?#8230;…
銆銆鍦ㄨ繖閲岋紝欏轟究璋堜竴涓嬪彟2涓瓧浣撴樉紺虹被錛欼D3DXFont鍜孋D3DFONT銆傚彲鑳芥棭灝辨湁浜轟細璇存庝箞鍦ㄤ笂闈㈢殑鍒楄〃涓病鏈夊畠浠紵鍘熷洜鎴戜細鍦ㄤ笅闈㈡參鎱㈠湴璇存槑錛?br>銆銆ID3DXFont錛屽畠瀛樺湪浜嶥3DX搴撲腑錛屼竴涓幇鎴愮殑瀛椾綋綾伙紝涓嶈繃瀵逛簬瀹冪殑澶勭悊鏂規(guī)硶……鎴戝疄鍦ㄤ笉鏁㈡伃緇達紝灝卞紩鐢ㄤ竴浣嶅ぇ甯堟墍璇寸殑璇濇潵琛ㄨ揪鎴戠殑鐪嬫硶鍚? 鍦ㄥ唴閮ㄥ疄鐜頒腑錛?ID3DXFont::DrawText()鍑芥暟紜疄鍋氫簡鎴戜笂闈㈣璁虹殑宸ヤ綔錛屽厛寤虹珛涓寮燝DI鍏煎鐨勪綅鍥撅紝鎶婃枃鏈粯鍒跺埌浣嶅浘涓婏紝鑰屽悗鎶婁綅鍥炬嫹璐濆埌綰圭悊璐村浘涓婂幓錛屾渶鍚庢妸綰圭悊娓叉煋鍒板睆騫曚笂銆傝繖鏍蜂綘灝辮仛榻愪簡鎵鏈夌殑榫熼熺殑鍘熷GDI鍑芥暟錛岃繕鍖呮嫭浜嗕竴澶у爢鐨勯澶栧紑閿 鈥?鏈緇堬紝榪欎釜鍑芥暟姣斿師鏉DI鐨凞rawTextEx()鍑芥暟瑕佹參涓婅秴榪囧叚鍊?#8230;…
銆銆CD3DFONT錛屾槸鐢盡$鍦―3D鐨勬鏋朵唬鐮佷腑鎻愪緵銆備笉榪囧畠鍙兘鏄劇ず鑻辨枃錛屾湁寰堝鏈嬪弸閫氳繃鑷繁瀹氬埗鍜屼慨鏀硅繖涓被錛屾潵瀹炵幇鑷繁鐨勪腑鏂囨樉紺恒備笉榪囨晥鏋滈兘涓嶆槸寰堝ソ銆傚叾瀹炲師鐞嗭紝璺烮D3DXFont鐨勬柟娉曞樊涓嶅錛屼笉榪囧鐞嗘柟娉曡鑱槑浜嗕竴鐐廣?/font>
鍒嗘瀽涓庢濊?br>銆銆閭d箞鎴戜滑搴旇鎬庝箞鍔炲憿錛熼氬父鎴戜滑浼氬夠鎯籌紝濡傛灉鍙互鍍忓鐞嗚嫳鏂囬偅鏍鳳紝鎶婃墍鏈夌殑姹夊瓧閮戒繚瀛樺湪涓寮犱綅鍥鵑噷錛岃鏈夊濂姐傝繖鏍鳳紝鏄劇ず鐨勯熷害灝變笉鏄棶棰樹簡錛岀洿鎺ュ彲浠opyRect涓婂幓銆傚彲鏄紝榪欐牱鍙兘鍚楋紵棣栧厛錛屽繀欏繪瘡涓縐嶅瓧浣撻兘瑕佺敓鎴愯繖鏍風(fēng)殑涓涓法鍨嬩綅鍥俱傝屼笖鎹鍦℅B2312涓紝涓鍏辨湁6000澶氫釜姹夊瓧錛屽氨綆楁槸鐢?6*16錛宱h my god錛岃繖涓綅鍥捐鏈夊澶у晩錛堟嵁璇翠細鏈?.5M^__^錛夛紒錛侊紒鑰屼笖鍦―irectX8.1涓紝瀵逛簬Texture錛堟樉紺虹殑鏈灝忓崟浣嶏紝灝卞ソ璞℃槸鍘熸潵 DirectSurface鐨勬蹇典竴鏍楓傝榪囧灝戦亶浜嗭紝涓嶈鍐嶇敤DirectX8浠ュ墠鐨勪笢瑗夸簡銆備笉瑕佽瘯鐫鍘誨洖蹇嗛偅浜涚編濂界殑榪囧幓錛屾垜寰堟槑鐧斤紝瑕佷綘涓涓嬪瓙鏀懼純鍘熸潵澶氬勾鎵鑾峰緱鐨勬垚灝憋紝鏄竴浠跺緢鐥涜嫤鐨勪簨鎯咃紝浣嗘槸鍖呰⒈澶噸錛屾槸浼氬獎鍝嶈繘姝ョ殑銆傚氨鍍忔槸鎴戜滑鐨勫浗瀹?#8230;…鎵繙浜嗭級錛屼笉鍚岀殑鏄懼崱錛屾敮鎸佺殑鏈澶у閲忎篃鏄笉鍚岀殑銆傛瘮鏂硅鏃╂湡鐨刅oodoo錛屽彧鏀寔256*256澶у皬鐨凾exture銆傝屽湪鎴戠殑鏄懼崱錛圙eforce2 MX 200錛変笂嫻嬭瘯錛屾敮鎸佹渶澶?048*2048澶у皬鐨凾exture銆傚浜庤繖鏍風(fēng)殑紜歡涓嶇‘瀹氭э紝鎴戜滑鍙兘鍙栧叾鏈灝忓鹼紝涔熷氨鏄?56*256銆?br>銆銆姹夊瓧铏界劧寰堝錛屼絾鏄父鐢ㄧ殑姹夊瓧錛屽叾瀹炰篃灝卞彧鏈夐偅涔堝嚑鐧句釜銆傚儚榪欐牱鐨勫瓧錛氶銆侀灤錛屼綘涓杈堝瓙浼氱湅鍒板灝戞鍛紵濡傛灉鍙互鍋氫竴涓被浼間簬Cache鐨勪笢瑗匡紝淇濆瓨鐫甯哥敤鐨勯偅浜涗釜姹夊瓧錛屽湪闇瑕佹樉紺虹殑鐨勬椂鍊欙紝鍏堝湪Cache涓煡鎵撅紝濡傛灉鏈夌殑璇濓紝灝遍┈涓婄敾涓婂幓錛涘鏋滄病鏈夛紝灝變粠瀛楀簱涓彁鍙栧埌Cache涓傝繖鏍風(fēng)殑璇濓紝鍦ㄤ嬌鐢?Texture鏉ヤ繚瀛樻眽瀛楃殑浣嶅浘淇℃伅鐨勫悓鏃訛紝瀵逛簬姣忎釜姹夊瓧錛屾垜浠繕瑕佸畾涔変竴涓粨鏋勶紝鐒跺悗鐢ㄤ竴涓笢瑗挎妸瀹冧覆璧鋒潵錛岀患鍚堝畠浠?涓紝涔熷氨瀹炵幇浜嗘垜浠墍瑕佺殑 Cache浜嗐傚垰寮濮嬶紝鎴戞墍瀹氫箟鐨勭粨鏋勬槸榪欐牱鐨勶細
銆銆struct Char{
銆銆 char hz[3]; // 淇濆瓨姹夊瓧
銆銆 int frequency;// 浣跨敤棰戠巼
銆銆 RECT rect; // 榪欎釜瀛楀搴斾綅鍥劇殑鍖哄煙
銆銆 Bool isUsing; // 鏄惁浣跨敤
銆銆}
銆銆瀵逛簬姹夊瓧鍜岃嫳鏂囷紝鎴戝湪榪欓噷澶ф鍦拌涓涓嬪師鐞嗭細姹夊瓧鏄敱2涓瓧鑺備繚瀛橈紝鑰岃嫳鏂囧彧闇瑕?涓傝屽垽鏂竴涓瓧鏄惁鏄眽瀛楋紝鍙渶鍒ゆ柇絎?涓猙yte鏄惁>128錛堝湪鍘熸潵鐨凣B2312涓紝姹夊瓧鐨?涓瓧鑺傞兘鏄?gt;128鐨勩傝屾柊鐨凣BK瀛楀簱錛屾眽瀛楃殑絎?涓瓧鑺備笉涓瀹?gt;128錛屾垜鎯寵繖鏄墿澶т簡瀛楀簱瀹歸噺鐨勫師鍥犮傛垜鐨勬剰鎬濇槸璇達紝濡傛灉緇欎竴涓瓧絎︿覆浣狅紝闅忔満緇欏叾涓竴涓綅緗紝鐒跺悗鎴戦棶浣犺繖涓綅緗槸浠涔堬紵浣犵殑鍥炵瓟鍙兘鏄細1 鑻辨枃 2 姹夊瓧鐨勯瀛楄妭 3 姹夊瓧鐨勫熬瀛楄妭銆傝岃繖涓棶棰樼殑瑙f硶錛屼負(fù)浜嗙ǔ濡ヨ搗瑙侊紝浣犲繀欏諱粠瀛楃涓茬殑寮濮嬪垽鏂搗錛夈備篃灝辨槸璇村湪char[3]涓紝濡傛灉淇濆瓨鐨勬槸姹夊瓧錛屽垯char[0]淇濆瓨姹夊瓧絎?涓瓧鑺傦紝char[1]淇濆瓨姹夊瓧絎?涓瓧鑺傦紝絎?涓瓨鏀?#8217;\0’錛涘鏋滄槸鑻辨枃鐨勮瘽錛屽垯鍙敤鍒癱har[0]錛屽叾瀹冪殑鍏ㄩ儴涓?#8217;\0’銆?br>銆銆鎺ヤ笅鏉ワ紝瀵逛簬浣跨敤char[3]鏉ヤ繚瀛樻眽瀛楋紝鏄惁鐪熺殑寰堝悎閫傚憿錛熷洜涓哄鏋滄妸瀹冨綋浣滀竴涓瓧絎︿覆鏉ョ湅鐨勮瘽錛屽湪鏌ユ壘鏃跺氨闇瑕佷嬌鐢?strcmp 鏉ユ瘮杈冨瓧絎︿覆浜嗭紝榪欐牱涓瀹氭槸浼氬獎鍝嶉熷害鐨勩傚鏋滀笉鎶婂畠鐪嬩綔瀛楃涓詫紙瀛楃涓茬殑鏈鍚庝竴涓瓧鑺傞渶瑕佷互’\0’緇撳熬錛夛紝鍙敤char[2]鐨勮瘽錛屾垜浠彲浠ュ彧鏄畝鍗曞湴璋冪敤瀹廙AKEWORD錛屾妸2涓猙yte鍘嬫垚1涓猈ORD銆傚綋鎶婃枃瀛椾綔涓轟竴涓猈ORD鏉ョ湅鐨勬椂鍊欙紝榪欐牱鏌ユ壘姣旇緝鏃跺彲浠ョ敤WORD鍐呭緩鐨?=鎿嶄綔錛岃繖鏍瘋姣旇皟鐢╯trcmp鍑芥暟瑕佸揩寰楀銆?br>銆銆int frequency鐢ㄦ潵鏍囧織姣忎釜WORD鐨勪嬌鐢ㄩ鐜囥傝鎯籌紝濡傛灉涓涓瓧宸茬粡瀛樺湪浜嶤ache涓紝浠ュ悗姣忓瀹冭皟鐢ㄤ竴嬈★紝灝辮frequency++銆傝繖鏍峰仛榪樻湁涓涓敤鎰忔槸錛屾槸鍚﹀彲浠ュ湪涓涓悎閫傜殑鏃跺欙紝浠requency涓哄弬鐓ф潵瀵硅繖鏁翠釜Cache鎺掍釜搴忥紝鎶婂父鐢ㄧ殑瀛楁斁鍦ㄥ墠闈€傞偅涔堝湪鏄劇ず鏃訛紝鍙互鍏堝湪 Cache涓煡鎵炬墍瑕佹樉紺虹殑瀛楁槸鍚﹀凡緇忓瓨鍦ㄤ簬Cache涓紝濡傛灉鏈夊垯鐩存帴鏄劇ず錛屾病鏈夌殑璇濇墠闇瑕侀噰鍙栨煇縐嶆墜孌靛皢瀛楀姞鍏ュ埌Cache涓備竴浜涘父鐢ㄧ殑瀛楋紙鍍忥細鎴戙佺殑銆佺潃銆佷簡銆佽繃……錛夛紝浣垮緱鏄劇ず鐨勯熷害灝嗕細澶уぇ鎻愰珮銆?br>銆銆鍏跺疄涓婇潰璇翠簡鍗婂ぉ鐨凜ache錛屽畠鍏蜂綋鏄粈涔堝憿錛熷叾瀹炲氨鏄寚鐨勬渶灝忕粯鍒跺崟浣嶏紝鍦―irectX7閲屾槸Surface錛岃屽湪DirectX8涓氨鏄?Texture銆備嬌鐢ㄥ畠鏉ュ瓨鏀炬樉紺鴻繃鐨勬眽瀛楋紝榪欐牱錛屽氨涓嶇敤姣忔閮戒粠瀛楀簱涓鍙栨垨鏄皟鐢ㄥTextOut榪欑被GDI瓚呮參鐨勫嚱鏁頒簡銆傚洜涓烘瘡嬈″湪緇樺埗涓涓枃瀛椾箣鍓嶏紝閮戒細鍏堝湪榪欎釜Cache涓壘錛屾湁鐨勮瘽灝辯洿鎺ョ敾涓婂幓錛屾病鏈夋墠浼氳皟鐢═extOut鎿嶄綔銆傝岃繖鏍峰仛鐨勫師鍥狅紝鎴戜滑鍏堣鎯充竴涓嬶細娓告垙涓鑸細鎺у埗涓?0fps鎴栨槸60fps鐨勯熷害涓嶅仠鍦板埛鏂幫紝濡傛灉鍦℅ameLoop涓湁浠諱綍鐨勪唬鐮佹槸榫熼熺駭鐨勮瘽錛岃繖鏍峰氨浼氬鑷磃ps鐨勬渶澶ф暟鐨勯檷浣庯紝涔熷氨鎰忓懗鐫鍦ㄤ繚璇?0fps鎴?60fps鐨勫悓鏃訛紝鑳界粯鍒跺埌灞忓箷涓婄殑鐗╀綋鐨勬暟閲忓噺灝戜簡銆傝繖灝辨槸鎴戜滑涓轟粈涔堣浣跨敤Texture鏉ヤ綔涓篊ache鐨勫疄鐜扮殑鍘熷洜銆傚啀涓涓紝鏂囧瓧鍦ㄥ睆騫曚笂鏄劇ず鏃朵竴鑸細淇濇寔涓孌墊椂闂達紝榪欎釜鏃墮棿鍙兘鏄?縐?3縐掞紝鎴戜滑鐨勬父鎴忎篃灝變細鐩稿簲鍦版洿鏂?0fps鎴?80fps錛岃繖鏄洜涓轟漢浠渶瑕侀槄璇誨畠浠傛垨鑰呮槸涓浜涘鏍囬榪欐牱鐨勬枃瀛楋紝瀹冧滑鎬繪槸涓嶄細鏇存柊鐨勶紝鎴栨槸鏇存柊寰楀緢鎱€傛垜浠畬鍏ㄥ彲浠ュ湪絎竴鏃墮棿錛屾瘮鏂硅鎴戜滑鐨勭敾闈㈡湁60fps錛屽湪絎?涓猣ps鏃訛紝鎴戜滑寰楃煡瑕佹樉紺烘枃瀛?#8221;鍞?#8221;錛岀劧鍚庡厛鍦–ache涓壘錛岀粨鏋滃緢緋燂細娌℃湁鎵懼埌錛佽繖鏃墮┈涓婄敤TextOut鍐欏埌Texture涓婏紙鐜板湪榪樻槸灞炰簬絎?涓猣ps鐨勬椂闂磋寖鍥村唴錛夛紝鑰屾帴涓嬫潵鐨?9涓?fps錛堢敋鑷蟲洿澶氾級錛岄兘涓嶇敤鍐嶈皟TextOut浜嗭紝鑰屾槸鐩存帴浠庢垜浠殑Cache錛歍exture涓奀opy鍒板睆騫曚笂錛岄熷害寰楀埌浜嗕繚闅溿傝皥鍒癎DI鐨勫嚱鏁幫紝涓轟簡瀹炵幇璁懼鏃犲叧鎬э紝瀹冧滑鐨勯熷害閮藉緢鎱€傚叾瀹炲畠浠篃涓嶅儚璇村緱閭d箞鎱紝濡傛灉涓嶆槸姣忎竴甯ч兘瑕佽皟鐢ㄥ畠浠紝涔熺畻鏄洰蹇殑^_^銆傞偅涔堣繖涓猂ECT rect錛屽氨浠h〃鐫榪欎釜鏂囧瓧鎵瀵瑰簲鍦═exture涓婄殑鍖哄煙浣嶇疆銆?br>銆銆浣跨敤浠涔堜笢瑗挎潵鎶婅繖n涓狢har涓茶搗鏉ュ憿錛屼竴鑸細鎯沖埌鐨勬槸閾捐〃錛屽師鍥犳棤闈炴湁2涓細1 闅忔椂鏈夋柊鐨勫瓧鍔犺繘鏉ワ紝鑰屽唴瀛樻槸涓嶈繛緇殑 2 瀹冨嚑涔庢病鏈夊閲忕殑闄愬埗錛堥櫎闈炴槸鍐呭瓨鐢ㄥ畬浜嗭級銆備笉榪囬摼琛ㄧ殑璁塊棶閫熷害鏄緢鎱㈢殑錛屽鏋滀嬌鐢ㄥ儚鏁扮粍榪欐牱鐨勪笢瑗垮氨濂戒簡銆備粩緇嗘兂鎯籌紝鍦ㄨ繖閲岋紝鎴戜滑鐢ㄦ潵瀛樺偍鐨?Cache錛屾渶澶т篃灝辨槸256*256錛堢悊鐢變笂闈㈣浜嗭級錛屾墍浠ュぇ灝忓簲璇ヤ細鏄浐瀹氱殑銆傛垜浠彧闇瑕佸湪鏁扮粍涓殑緇欐瘡涓涓眽瀛楀姞涓婁竴涓爣蹇楋紝璇存槑榪欎釜浣嶇疆鐨勪嬌鐢ㄦ儏鍐點傞偅涔堝氨浣跨敤鏁扮粍鍚э紝榪欐牱鐨勮瘽錛岃闂殑閫熷害瑕佹洿蹇竴浜涳紝鐩存帴棣栧湴鍧+鍋忕Щ閲忓氨澶熶簡錛屼笉蹇呭儚閾捐〃錛屽湪鏌ユ壘鏃墮渶瑕侀恘ode璁塊棶銆傚綋鐒訛紝鎴戠粷涓嶄細鎯沖埌鐢?new Char鏉ョ敵璇瘋繖涓暟緇勩傚洜涓鴻繖鏍峰仛瀹炲湪娌℃湁蹇呰錛岃涓嶈榪囦簬榪蜂俊鑷繁鐨勮兘鍔涳紝鍦⊿TL涓凡緇忔湁vector浜嗭紝涓轟粈涔堣繕瑕佽嚜宸卞啓鍛紵^_^鏈鍚庣殑涓涓?bool鎴愬憳鍙橀噺isUsing錛屼篃灝辨槸涓婇潰鎵璇達紝鐢ㄦ潵鏍囧織浣跨敤鎯呭喌鐨勩?/font>
瀹為檯鐨勬搷浣?br>銆銆涓婇潰鑰冭檻浜嗛偅涔堝錛屾垜璁や負(fù)閮芥槸瀹為檯鎿嶄綔涔嬪墠鎵搴旇鏈夌殑銆傚厛璋堣皥濡備綍鏄劇ず鍚э紝鍥犱負(fù)鍦―irectX8.1涓凡緇忓皢DirectDraw鍜?Direct3D铻嶅悎涓篋irectGraphics浜嗐傛墍浠ユ棤娉曞儚鍘熸潵閭f牱浜?#8230;………鍝︼紝瀹炲湪鏈夊お澶氫笢瑗胯璁蹭簡錛屾垜榪樻槸鎺ㄨ崘鍑犵瘒鏂囩珷緇欎綘鍚_^錛?br>銆銆http://vip.6to23.com/mays/develop/directx/200201/Geczy3Din2D.htm
銆銆http://vip.6to23.com/mays/develop/directx/200201/GESurface.htm
銆銆http://vip.6to23.com/mays/develop/directx/200112/2DGtoDX8.htm
銆銆http://vip.6to23.com/mays/develop/directx/200201/DX8adv2D.htm
銆銆鎺ヤ笅鏉ワ紝鎴戜細鍋囪浣犲凡緇忓叿澶囦簡鍦―irectX8.1涓粯鍥劇殑鍩烘湰姒傚康浜嗭紝鎵浠ュ湪浣犵戶緇線涓嬮槄璇諱箣鍓嶏紝璇峰姟蹇呭厛浠旂粏闃呰浠ヤ笂鎺ㄨ崘鐨勬枃绔犮?br>銆銆鍓嶉潰鎻愬埌錛岄渶瑕佷竴涓獀ector鏉ュ搴擳exture涓婂悇涓綅緗枃瀛楃殑淇℃伅錛屼笂闈㈠凡緇忓垱寤轟簡涓涓粨鏋凜har錛屽垯榪欎釜vector鐨勫畾涔変負(fù)錛?br>銆銆 vector <Char> _vBuf; // 璁板綍緙撳啿涓幇鏈夌殑鏂囧瓧鎯呭喌
銆銆棣栧厛錛岀敱浜庡彲浠ュ埄鐢ㄧ‖浠剁殑鏀懼ぇ緙╁皬鏈鴻兘錛屾墍浠ュ瓧浣撶殑澶у皬綺懼害瑕佹眰涓嶆槸寰堥珮錛屽彧闇瑕佹敮鎸?6*16鍜?4*24澶у皬鐨勫瓧浣撳氨鍙互浜嗐傛垜浠渶瑕佷竴涓繖鏍風(fēng)殑鍒濆鍖栧嚱鏁幫細
銆銆bool CFont::
銆銆/*-------------------------------------------------------------
銆銆LPDIRECT3DDEVICE8 pd3dDevice --- D3DDevice璁懼
銆銆char szFontName[] --- 瀛椾綋鍚?濡? 瀹嬩綋)
銆銆int nSize --- 瀛椾綋澶у皬, 鍙敮鎸?6鍜?4
銆銆int nLevel --- 綰圭悊鐨勫ぇ灝忕駭鍒?br>銆銆-------------------------------------------------------------*/
銆銆Init( LPDIRECT3DDEVICE8 pd3dDevice, char szFontName[], int nSize, int nLevel )銆?br>銆銆
銆銆鍦―irectX8.1涓紝鐢盨etTexture(…)鎵璐寸殑鍥劇殑澶у皬錛屼篃灝辨槸Texture鐨勫ぇ灝忥紝鏄湁澶у皬闄愬埗鐨勶紝闀垮拰瀹介兘蹇呴』鏄?^n錛岃屼笖浣嶅浘瓚婂ぇ錛屾墍鑺辮垂鐨勬樉瀛樿秺澶э紝榪欐牱鐣欑粰鍏朵粬鏄劇ず鐢ㄧ殑鏄懼瓨灝卞皯浜嗐傛墍浠ワ紝蹇呴』鏍規(guī)嵁闇姹傜殑涓嶅悓錛屾潵鑷畾Texture(涔熷氨鏄疌ache)鐨勫ぇ灝忋傚洜涓烘眽瀛楃偣闃靛ぇ灝忕殑鍘熷洜錛屾墍浠ヤ粠瀹炵敤瑙掑害鑰岃█錛堟瘮鏂硅鍙槸鏄劇ずfps鎴栨槸鐭皬鐨勬爣棰橈級錛屽紑杈熶竴涓?4*64澶у皬鐨凾exture錛屾墠鑳芥弧瓚蟲渶浣庢儏鍐典笅鐨勯渶瑕侊紙榪欐椂濡傛灉閫夋嫨16鐐歸樀鐨勮瘽鍙互瀛樻斁16涓眽瀛楋紝24鐐歸樀鍙互瀛樻斁7涓紝渚濇綾繪帹……錛夈?br>銆銆鏍規(guī)嵁璁劇疆錛屽垱寤篢exture錛?br>銆銆 _TextureSize = 32 << nLevel; // 綰圭悊澶у皬
銆銆 _TextSize = nSize; // 鏂囧瓧澶у皬
銆銆 _TextureSize = 32 << nLevel; // 綰圭悊澶у皬
銆銆
銆銆 _RowNum = _TextureSize / _TextSize; // 璁$畻涓琛屽彲浠ュ綰沖灝戜釜鏂囧瓧
銆銆 _Max = _RowNum * _RowNum; // 璁$畻緙撳啿鏈澶у?br>銆銆
銆銆鍒涘緩瀛椾綋錛岃繕鏄渶瑕佷嬌鐢╓in32 API銆備篃灝辨槸鍏堝垱寤轟竴涓狧DC錛?br>銆銆 _hDc = CreateCompatibleDC(NULL);
銆銆
銆銆鐒跺悗鍒涘緩涓涓狟ITMAP鍜屼竴涓狥ONT錛屽皢瀹冧滑涓嶩DC鍏寵仈璧鋒潵銆?br>銆銆 LOGFONT LogFont;
銆銆 ZeroMemory( &LogFont, sizeof(LogFont) );
銆銆 LogFont.lfHeight = -_TextSize;
銆銆 LogFont.lfWidth = 0;
銆銆 LogFont.lfEscapement = 0;
銆銆 LogFont.lfOrientation = 0;
銆銆 LogFont.lfWeight = FW_BOLD;
銆銆 LogFont.lfItalic = FALSE;
銆銆 LogFont.lfUnderline = FALSE;
銆銆 LogFont.lfStrikeOut = FALSE;
銆銆 LogFont.lfCharSet = DEFAULT_CHARSET;
銆銆 LogFont.lfOutPrecision = OUT_DEFAULT_PRECIS;
銆銆 LogFont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
銆銆 LogFont.lfQuality = DEFAULT_QUALITY;
銆銆 LogFont.lfPitchAndFamily = DEFAULT_PITCH;
銆銆 lstrcpy( LogFont.lfFaceName, szFontName );
銆銆
銆銆 _hFont = CreateFontIndirect( &LogFont );
銆銆 if ( NULL == _hFont )
銆銆 {
銆銆 DeleteDC( _hDc );
銆銆 return false;
銆銆 }
銆銆
銆銆錛堝彧闇瑕佸垱寤轟竴涓瓧浣撳ぇ灝忕殑BITMAP鍗沖彲錛?br>銆銆 BITMAPINFO bmi;
銆銆 ZeroMemory(&bmi.bmiHeader, sizeof(BITMAPINFOHEADER));
銆銆 bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
銆銆 bmi.bmiHeader.biWidth = _TextSize;
銆銆 bmi.bmiHeader.biHeight = -_TextSize;
銆銆 bmi.bmiHeader.biPlanes = 1;
銆銆 bmi.bmiHeader.biBitCount = 32;
銆銆 bmi.bmiHeader.biCompression = BI_RGB;
銆銆
銆銆錛堣繖閲岄渶瑕佸畾涔変竴涓寚閽堟寚鍚戜綅鍥劇殑鏁版嵁錛?br>銆銆 DWORD * _pBits; // 浣嶅浘鐨勬暟鎹寚閽堬級
銆銆
銆銆 _hBmp = CreateDIBSection( _hDc, &bmi, DIB_RGB_COLORS,
銆銆 (void **) &_pBits, NULL, 0 );
銆銆 if ( NULL == _hBmp || NULL == _pBits )
銆銆 {
銆銆 DeleteObject( _hFont );
銆銆 DeleteDC( _hDc );
銆銆 return false;
銆銆 }
銆銆
銆銆 // 灝唄Bmp鍜宧Font鍔犲叆鍒癶Dc
銆銆 SelectObject( _hDc, _hBmp );
銆銆 SelectObject( _hDc, _hFont );
銆銆
銆銆鎺ョ潃璁劇疆鑳屾櫙鑹插拰鏂囧瓧鑹詫細
銆銆 SetTextColor( _hDc, RGB(255,255,255) );
銆銆 SetBkColor( _hDc, 0 );
銆銆
銆銆璁劇疆鏂囧瓧涓轟笂瀵歸綈錛?br>銆銆 SetTextAlign( _hDc, TA_TOP );
銆銆
銆銆鍒涘緩Texture鎵闇瑕佺殑欏剁偣緙撳啿錛?br>銆銆 if ( FAILED( _pd3dDevice->CreateVertexBuffer( _Max * 6 * sizeof(FONT2DVERTEX),
銆銆 D3DUSAGE_WRITEONLY | D3DUSAGE_DYNAMIC, 0,
銆銆 D3DPOOL_DEFAULT, &_pVB ) ) )
銆銆 {
銆銆 DeleteObject( _hFont );
銆銆 DeleteObject( _hBmp );
銆銆 DeleteDC( _hDc );
銆銆 return false;
銆銆 }
銆銆
銆銆鍒涘緩Texture
銆銆 if ( FAILED( _pd3dDevice->CreateTexture( _TextureSize, _TextureSize, 1, 0,
銆銆 D3DFMT_A4R4G4B4, D3DPOOL_MANAGED, &_pTexture ) ) )
銆銆 {
銆銆 DeleteObject( _hFont );
銆銆 DeleteObject( _hBmp );
銆銆 DeleteDC( _hDc );
銆銆 SAFE_RELEASE(_pVB);
銆銆 return false;
銆銆 }
銆銆
銆銆璁劇疆娓叉煋璁懼鐨勬覆鏌撳睘鎬э細
銆銆 _pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
銆銆 _pd3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
銆銆 _pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );
銆銆 _pd3dDevice->SetRenderState( D3DRS_ALPHATESTENABLE, TRUE );
銆銆 _pd3dDevice->SetRenderState( D3DRS_ALPHAREF, 0x08 );
銆銆 _pd3dDevice->SetRenderState( D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL );
銆銆 _pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE );
銆銆
銆銆 _pd3dDevice->SetTexture( 0, _pTexture );
銆銆 _pd3dDevice->SetVertexShader( D3DFVF_FONT2DVERTEX );
銆銆 _pd3dDevice->SetStreamSource( 0, _pVB, sizeof(FONT2DVERTEX) );
銆銆
銆銆璁劇疆緙撳啿鐨勬渶澶у閲?br>銆銆 _vBuf.resize( _Max );
銆銆
銆銆榪欐牱錛屽垵濮嬪寲瀹屾垚浜嗐傛帴涓嬫潵鏄浣曟妸涓涓眽瀛楀啓鍒癟exture涓紝浠ュ強濡備綍榪涜綆$悊銆傚畾涔夊嚱鏁幫細
銆銆// 寰楀埌鏂囧瓧鍦ㄧ汗鐞嗕腑鐨勪綅緗?br>銆銆void CFont::
銆銆/*-------------------------------------------------------------
銆銆char c1 --- 鏂囧瓧鐨勭1涓瓧鑺?br>銆銆char c2 --- 鏂囧瓧鐨勭2涓瓧鑺?br>銆銆int & tX --- 鍐欏叆綰圭悊涓殑鍧愭爣x
銆銆int & tY --- 鍐欏叆綰圭悊涓殑鍧愭爣y
銆銆-------------------------------------------------------------*/
銆銆Char2Texture( char c1, char c2, int & tX, int & tY )
銆銆{
銆銆 WORD w = MAKEWORD(c1, c2); // 鎶婃瀛楀彉涓篧ORD
銆銆 vector<Char>::iterator it = find( _vBuf.begin(), _vBuf.end(), w );
銆銆 if ( it == _vBuf.end() ) // 濡傛灉娌℃壘鍒?br>銆銆 {
銆銆 it = find( _vBuf.begin(), _vBuf.end(), 0 ); // 鏌ユ壘絀洪棽浣嶇疆
銆銆 if ( it == _vBuf.end() ) // 緙撳啿宸叉弧
銆銆 {
銆銆 for(; it!=_vBuf.begin(); it-- )
銆銆 {
銆銆 it->hz = 0;
銆銆 }
銆銆// Log.Output( "瀛椾綋緙撳啿宸叉弧, 娓呯┖!" );
銆銆 }
銆銆
銆銆 // 璁$畻褰撳墠絀洪棽鐨凜har鍦ㄧ紦鍐蹭腑鏄鍑犱釜
銆銆 int at = it-_vBuf.begin();
銆銆
銆銆 // 寰楀埌絀洪棽浣嶇疆鐨勫潗鏍?br>銆銆 tX = (at % _RowNum) * _TextSize;
銆銆 tY = (at / _RowNum) * _TextSize;
銆銆
銆銆 // 璁劇疆榪欎釜Char涓轟嬌鐢ㄤ腑
銆銆 (*it).hz = w;
銆銆
銆銆 RECT rect = {0, 0, _TextSize, _TextSize};
銆銆 char sz[3] = {c1, c2, '\0'};
銆銆 // 濉厖鑳屾櫙涓洪粦鑹?閫忔槑鑹?
銆銆 FillRect( _hDc, &rect, (HBRUSH)GetStockObject(BLACK_BRUSH) );
銆銆 // 寰hBitmap涓婂啓瀛?br>銆銆 ::TextOut( _hDc, 0, 0, sz, c1 & 0x80 ? 2 : 1 );
銆銆
銆銆 // 閿佸畾琛ㄩ潰, 鎶婃眽瀛楀啓鍏ョ汗鐞? 鐧借壊鐨勬槸瀛?鍙), 榛戣壊涓鴻儗鏅?閫忔槑)
銆銆 D3DLOCKED_RECT d3dlr;
銆銆 _pTexture->LockRect(0, &d3dlr, NULL, D3DLOCK_NOSYSLOCK);
銆銆 BYTE * pDstRow = (BYTE*)( (WORD *)d3dlr.pBits + tY * _TextureSize + tX );
銆銆
銆銆 for (DWORD y=0; y<_TextSize; y++)
銆銆 {
銆銆 WORD * pDst16 = (WORD*)pDstRow;
銆銆 for (DWORD x=0; x<_TextSize; x++)
銆銆 {
銆銆 BYTE bAlpha = (BYTE)((_pBits[_TextSize * y + x] & 0xff) >> 4);
銆銆 if (bAlpha > 0)
銆銆 *pDst16++ = (bAlpha << 12) | 0x0fff;
銆銆 else
銆銆 *pDst16++ = 0x0000;
銆銆 }
銆銆 pDstRow += d3dlr.Pitch;
銆銆 }
銆銆 _pTexture->UnlockRect( NULL );
銆銆 }
銆銆 else
銆銆 {
銆銆 // 璁$畻褰撳墠絀洪棽鐨凜har鍦ㄧ紦鍐蹭腑鏄鍑犱釜
銆銆 int at = it-_vBuf.begin();
銆銆
銆銆 // 寰楀埌榪欎釜瀛楃殑鍧愭爣
銆銆 tX = (at % _RowNum) * _TextSize;
銆銆 tY = (at / _RowNum) * _TextSize;
銆銆 }
銆銆}
銆銆浠ヤ笂浠g爜涓殑娉ㄩ噴宸茬粡寰堟竻妤氫簡錛岀浉淇℃棤欏繪垜澶氳█銆傝繖閲屽敮涓闇瑕佸0鏄庣殑鏄細鍘熸潵鎵瀹氫箟鐨凜har緇撴瀯鏄繖鏍風(fēng)殑
銆銆struct Char{
銆銆 char hz[3]; // 淇濆瓨姹夊瓧
銆銆 int frequency;// 浣跨敤棰戠巼
銆銆 RECT rect; // 榪欎釜瀛楀搴斾綅鍥劇殑鍖哄煙
銆銆 Bool isUsing; // 鏄惁浣跨敤
銆銆}
銆銆鍚庢潵鍥犱負(fù)灝哻har hz[3]鍚堟垚涓篧ORD錛屾墍浠ユ敼涓篧ORD hz銆傜劧鍚庡浜巌nt frequency錛岃繖涓瘝棰戝簲璇ュ浣曡〃鐜幫紝鎴戜竴鐩存病鏈夋兂鍒板緢濂界殑鏂規(guī)硶銆俧requency搴旇鍦ㄤ綍鏃?+鍛紵鏄湪姣忔琚嬌鐢ㄧ殑鏃跺欏悧錛熶絾鏄繖鏍風(fēng)殑璇濓紝涓婇潰璇磋繃錛屾父鎴忔槸浠?0fps鐨勯熷害鍦ㄥ埛鏂幫紝濡傛灉鍋滀笂1鍒嗛挓鐨勮瘽錛屽彉閲忓緢蹇氨浼氭孩鍑轟簡銆傚氨綆楁槸浣跨敤鍍忔槸DWORD鎴朹_int64榪欐牱鐨勫法鍨嬪彉閲忎繚瀛橈紝涔熸槸涓嶅畨鍏ㄧ殑銆傞櫎闈炶兘鍦ㄦ煇涓悎閫傜殑鏃跺欏皢frequency娓呴浂錛屼絾鏄繖涓?#8220;鏃跺?#8221;鏄粈涔堟椂鍊欏憿錛熸垨鑰呰緗竴涓渶澶у鹼紝濡?5535錛屼絾鏄繖鏍蜂篃鍩烘湰涓婃病浠涔堢敤閫旓紝寰堝揩錛屾墍鏈夊湪vector涓殑Char涓殑frequency閮戒細++鎴?5535鐨勩傚洖蹇嗕竴涓嬫渶鍒濓紝鏄洜涓烘兂鎶婂父鐢ㄥ瓧鏀懼埌vector鐨勫墠闈紝浠ヤ究姣忔find鎿嶄綔鍙互鏈蹇繑鍥炵粨鏋滅殑銆傝岀粡榪囨垜鐨勬祴璇曪紝鍗充嬌涓嶅仛榪欐牱鐨勪紭鍖栨搷浣滐紝閫熷害涔熸槸寰堝揩鐨勶紝姣曠珶Cache涓嶆槸寰堝ぇ錛屽姞涓妚ector鏄繛緇唴瀛樼┖闂淬傛墍浠ュ彲浠ユ斁寮冧嬌鐢╥nt frequency銆?br>銆銆鐒跺悗瀵逛簬RECT rect錛屽洜涓烘病鏈変簡int frequency錛屾剰鍛崇潃涓鏃﹀皢姹夊瓧鍐欏叆鍒癟exture錛屽叾浣嶇疆灝變笉浼氬彉鍔ㄤ簡銆傛墍浠ワ紝寰堝鏄撴牴鎹甪ind鍑芥暟鎿嶄綔鍚庣殑iterator錛岀洿鎺ヨ綆楀嚭榪欎釜姹夊瓧鎵鍦═exture鐨勪綅緗傝繖鏍鳳紝RECT rect涔熶笉鍐嶅繀欏匯?br>銆銆鑰宐ool isUsing錛屽畠鏈韓灝辨槸涓浮鑲嬶紝瑕佷篃鍙互錛岃繖鏍風(fēng)粨鏋勬洿鍔犳竻鏅般備笉榪囷紝鐩存帴閫氳繃瑙傚療WORD hz涓?鎴栭潪0錛屽嵆鍙疄鐜癷sUsing鐨勪綔鐢ㄤ簡銆?br>銆銆涓轟粈涔堣瀵圭粨鏋凜har榪欎箞綺鵑洉緇嗙悽鍛紵
1. 鏃㈢劧娌℃湁蹇呰鐨勪笢瑗匡紝灝卞簲璇ュ垹闄?br>2. Char緇撴瀯鐨勫ぇ灝忚秺澶э紝vector鎵瑕佹眰鐨勫唴瀛樿秺澶?br>3. 灝忕殑緇撴瀯錛宖ind鍙互鏇村揩鍦版煡鎵懼嚭鎵緇撴灉
銆銆涓轟粈涔坒ind浼氭甯稿伐浣滃憿錛熻繖閲屾垜瑕佸ぇ姒傚湴璁蹭竴涓媐ind鏄浣曟煡鎵懼嚭鎵闇鐨勪綅緗殑錛氬畠鍙槸綆鍗曞湴浣跨敤while浠巚ector鐨刡egin涓鐩撮亶鍘嗗埌end錛岄愪釜鍒ゆ柇錛岀洿鍒版壘鍒頒負(fù)姝€俧ind瑕佹眰蹇呴』瀹炵幇鑷繁鐨刼perator ==()錛岃繘涓姝ヨ窡韙埌find鐨勬簮鐮佷腑錛屽彂鐜頒篃鏄繖鏍楓備簬鏄墠闈㈢殑緇撴瀯Char鍙樻垚浜嗙幇鍦ㄨ繖鏍鳳細
銆銆 struct Char{
銆銆 WORD hz; // 鏂囧瓧
銆銆
銆銆 Char() : hz(0) {}
銆銆
銆銆 // 鐢ㄤ綔鏌ユ壘鏂囧瓧
銆銆 inline bool operator == ( WORD h ) const
銆銆 {
銆銆 return hz==h ? true : false;
銆銆 }
銆銆 };
銆銆鏄笉鏄緢綆鍗曪紵^___^
銆銆
銆銆緇堜簬鍒頒簡鏄劇ず鐨勫嚱鏁頒簡錛?br>銆銆// 寰楀埌鏂囧瓧鍦ㄧ汗鐞嗕腑鐨勪綅緗?br>銆銆bool CFont::
銆銆/*-------------------------------------------------------------
銆銆char szText[] --- 鏄劇ず鐨勫瓧絎︿覆
銆銆int x --- 灞忓箷鍧愭爣x
銆銆int y --- 灞忓箷鍧愭爣y
銆銆D3DCOLOR --- 棰滆壊鍙奱lpha鍊?br>銆銆int nLen --- 瀛楃涓查暱搴?br>銆銆float fScale --- 鏀懼ぇ姣斾緥
銆銆-------------------------------------------------------------*/
銆銆TextOut( char szText[], int x, int y, D3DCOLOR color, int nLen, float fScale )
銆銆{
銆銆 Assert( szText!=NULL );
銆銆
銆銆 float sx = x, sy = y,
銆銆 offset=0, w=0, h=0, tx1=0, ty1=0, tx2=0, ty2=0;
銆銆 w = h = (float)_TextSize * fScale;
銆銆
銆銆 char ch[3] = {0,0,0};
銆銆 FONT2DVERTEX * pVertices = NULL;
銆銆 UINT wNumTriangles = 0;
銆銆 _pVB->Lock(0, 0, (BYTE**)&pVertices, D3DLOCK_DISCARD);
銆銆
銆銆 if ( -1 == nLen || // 榛樿鍊?1
銆銆 nLen > lstrlen( szText ) ) // 濡傛灉nLen澶т簬瀛楃涓插疄闄呴暱搴? 鍒檔Len=瀹為檯闀垮害
銆銆 nLen = lstrlen( szText );
銆銆 for (int n=0; n<nLen; n++ )
銆銆 {
銆銆 ch[0] = szText[n];
銆銆
銆銆 if ( ch[0]=='\n' )
銆銆 {
銆銆 sy+=h;
銆銆 sx=x;
銆銆 continue;
銆銆 }
銆銆
銆銆 if ( ch[0] & 0x80 )
銆銆 {
銆銆 n++;
銆銆 ch[1] = szText[n];
銆銆 offset = w;
銆銆 }
銆銆 else
銆銆 {
銆銆 ch[1] = '\0';
銆銆 offset = w / 2 ;
銆銆 }
銆銆
銆銆 int a, b;
銆銆 Char2Texture( ch[0], ch[1], a, b );
銆銆
銆銆 // 璁$畻綰圭悊宸︿笂瑙?0.0-1.0
銆銆 tx1 = (float)(a) / _TextureSize;
銆銆 ty1 = (float)(b) / _TextureSize;
銆銆 // 璁$畻綰圭悊鍙充笂瑙?0.0-1.0
銆銆 tx2 = tx1 + (float)_TextSize / _TextureSize;
銆銆 ty2 = ty1 + (float)_TextSize / _TextureSize;
銆銆
銆銆 // 濉厖欏剁偣緙撳啿鍖?br>銆銆 *pVertices++ = FONT2DVERTEX(sx, sy + h, 0.9f, color, tx1, ty2);
銆銆 *pVertices++ = FONT2DVERTEX(sx, sy, 0.9f, color, tx1, ty1);
銆銆 *pVertices++ = FONT2DVERTEX(sx + w, sy + h, 0.9f, color, tx2, ty2);
銆銆 *pVertices++ = FONT2DVERTEX(sx + w, sy, 0.9f, color, tx2, ty1);
銆銆 *pVertices++ = FONT2DVERTEX(sx + w, sy + h, 0.9f, color, tx2, ty2);
銆銆 *pVertices++ = FONT2DVERTEX(sx, sy, 0.9f, color, tx1, ty1);
銆銆
銆銆 wNumTriangles+=2;
銆銆
銆銆 sx+=offset; // 鍧愭爣x澧為噺
銆銆 }
銆銆 _pVB->Unlock();
銆銆 _pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, wNumTriangles );
銆銆
銆銆 return true;
銆銆}
緇撴潫璇?br>銆銆璁板緱鏈変竴鍙ュ悕璦錛?Keep it simple and stupid.鍦ㄥ疄鐜板姛鑳界殑鍚屾椂錛屼繚鎸佷唬鐮佺畝鍗曘佹竻鏅版槸闈炲父閲嶈鐨勪竴浠朵簨銆傜浉淇″湪寰鍚庣殑鏃ュ瓙閲岋紝鍦ㄤ笉璁烘槸鍒漢闃呰鎴栨槸浣犺嚜宸卞洖欏劇殑鏃跺欙紝浣犻兘浼氬彂鐜頒竴濡傛棦寰鍦伴伒瀹堣繖涓畧鍒欙紝鏄涔堝緱閲嶈錛?br>銆銆鐩鎬俊閫氳繃涓婇潰鎴戦偅鏃犳暟鐨勫簾璇濓紝鍔犱笂浠g爜涓繕綆楄凍澶熺殑娉ㄩ噴錛岃仾鏄庣殑浣犱竴瀹氳兘澶熸槑鐧借繖鍏朵腑鐨勫師鐞嗕簡鍚с傚鏋滀互涓婄殑鍐呭榪樹笉瓚充互璁╀綘瀹屽叏鎼炴竻妤氱殑璇濓紝浣犲彲浠ョ櫥褰曟垜鐨勪富欏碉細
銆銆
鐐庨緳宸ヤ綔瀹?br>銆銆涓婇潰涓嶄粎鍖呮嫭浜嗕笂闈㈡墍鍐欑殑紼嬪簭浠g爜錛岃繕鏈変竴涓敤鏉ユ紨紺烘晥鏋滅殑涓涓緢綆鍗曠殑demo銆?br>銆銆璇存槑錛屼互涓婃墍瀹炵幇鐨凜Font鏄寘鍚湪鎴戠殑娓告垙寮曟搸涓殑涓涓儴浠訛紝鑰岀洰鍓嶅凡緇忓疄鐜扮殑閮ㄤ歡鍖呮嫭鏈夛細
1. CGameFrame錛堟父鎴忔鏋剁被錛?----- 灝佽浜嗙獥鍙e強D3D璁懼鐨勫緩绔嬶紝闇瑕佹淳鐢熷嚭鑷繁鐨勫瓙綾?br>2. CAudio鍜孋Sound錛堝0闊崇被錛?----- 鏀寔wav/mid/mp3鐨勬挱鏀?br>3. CDirectInput錛堟帶鍒剁被錛?----- 閿洏銆侀紶鏍囨搷浣?br>4. CDirectShow錛堣棰戠被錛?----- 鏀寔avi/mpg/mov絳夌殑鎾斁
5. CSpriteX錛堢簿鐏電被錛?----- 鏂逛究娓告垙涓綺劇伒鐨勬帶鍒?br>6. CFont錛堝瓧浣撶被錛?----- 涓嫳鏂囧瓧浣撶殑鏄劇ず
7. CTimer錛堟椂闂寸被錛?----- 楂樼簿搴︽椂闂寸殑鎺у埗
8. FPS錛坒ps 綾伙級 ----- fps鐨勮綆?br>9. LOG錛堟棩蹇楃被錛?----- 娓告垙涓殑閿欒鍙嶅簲浠ュ強鐘舵佽褰?br>銆銆鏈閲嶈鐨勬槸錛岃繖涓狦ame Engine瀹屽叏鏄紑鏀炬簮浠g爜鐨勩傚叧浜庢洿鏂扮殑鎯呭喌銆佺増鏈鏄庝互鍙婃簮鐮佷笅杞斤紝璇烽殢鏃跺叧娉ㄦ垜鐨勪富欏碉紒
鎺ヤ笅鏉ワ紝鎴戝皢浼氱戶緇畬鍠勮繖涓狤ngine錛屽彲鑳藉姞鍏ョ殑鏈夛細楂樻晥綺掑瓙緋葷粺銆佹枩45搴﹁鍦板浘……
鏂規(guī)硶濡備笅錛堝紩鐢級錛歨ttp://blog.csdn.net/kun1234567/archive/2008/04/11/2282761.aspx
CEGUI浣跨敤utf8緙栫爜鏍煎紡銆傝繖灝辨剰鍛崇潃鎴戜滑鍙互寰堢畝鍗曠殑灝辨樉紺轟腑鏂囥?/p>
1銆佸紕涓寘鍚腑鏂囩殑瀛椾綋錛屽湪榪欓噷鎴戝熺敤澶у鏁頒緥瀛愰噷鐨?“C錛?windows/Font/simhei.ttf”鏂囦歡銆傛妸榪欎釜鏂囦歡鎷瘋礉鍒癉atafiles鏂囦歡澶圭殑Font鏂囦歡澶歸噷銆?/p>
2銆侀殢渚跨収鐫涓涓?.Font鏂囦歡錛岃嚜宸卞啓涓涓猻imhei.font鏂囦歡銆傚彲浠ョ敤TXT鍐欙紝鐒跺悗淇濆瓨錛屾湁鐨勬湅鍙嬭闇瑕佷繚瀛樹負(fù)utf8緙栫爜鏍煎紡錛屽疄闄呬笂鏄笉闇瑕佺殑銆?/p>
3銆佸悓鏃舵敞鎰忎慨鏀逛綘鍔犺澆鍒扮▼搴忛噷鐨剆cheme鏂囦歡錛屽皢閲岄潰鐨勫瓧浣撴枃浠惰緗垚simhei.ttf銆備綘涔熷彲浠ョ戶緇嬌鐢‵irstWindow榪欎釜渚嬪瓙錛岃繖鏍風(fēng)殑璇濈洿鎺ヤ慨鏀規(guī)簮浠g爜閲岀殑瀛椾綋涓簊imhei.tff銆?/p>
4銆佺幇鍦ㄥ湪紼嬪簭閲岃繘琛屽瓧絎︾紪鐮佽漿鎹紝鎴戞嬁浠g爜璇存槑闂錛?/p>
std::wstring aa = L"123涓枃abc銇傘亜銇嗐亪銇?;
char buff[128] = "";
WideCharToMultiByte( CP_UTF8, 0, aa.c_str(), aa.size(), buff, sizeof(buff), 0, 0);
button1->setText ( CEGUI::String ( CEGUI::utf8* )buff );
鍘熺悊鏄繖鏍風(fēng)殑錛屽浜巙tf8鏉ヨ錛岃嫳鏂囧瓧絎﹀拰ansi緙栫爜鍦ㄥ唴瀛樺竷灞涓婃病浠涔堝尯鍒紝閮芥槸涓涓猆CHAR銆備絾鏄浜庨潪鑻辨枃瀛楃錛屽垯鏄疷CHAR+UCHAR+UCHAR銆傚鏋滄垜浠墜宸ヨ繘琛岀紪鐮佹牸寮忚漿鎹紝浼氭瘮杈冪儲鐞愩?/p>
姣旇緝鍋鋒噿鐨勬柟娉曞氨鏄紝鎴戜滑鍏堢敤WCHAR(unicode鍐呭瓨甯冨眬,UCHAR+UCHAR+UCHAR+UCHAR)鏉ュ偍瀛橀渶瑕佹樉紺虹殑瀛楃涓詫紝鐒跺悗璋冪敤Win32API鏉ュ府鎴戜滑鎶婂瀛楃杞崲鎴恈har(澶氬瓧鑺傚瓧絎﹂泦鍐呭瓨甯冨眬)銆?/p>
榪欏氨鏄熀鏈柟娉曚簡錛岀劧鍚庢垜浠彲浠ユ牴鎹繖涓漿鎹㈡柟閽堬紝鍒╃敤Win32API闅忔剰鐨勮漿鎹㈠瓧絎︾紪鐮佹牸寮忥紝浠庤屾弧瓚崇▼搴忎腑鐨勫悇縐嶉渶姹傘?/p>
浜庢槸緇х畫Google(鎴戝緢鎳掞紝鍒漢鑳藉仛鐨勪簨鎯呬粠鏉ヤ笉楹葷儲鑷繁錛屾噿寰楄窡韙唬鐮?錛岀粨鏋滆繕鐪熻鎴戞壘鍒頒簡涓ょ瘒鐩稿叧鐨勬枃绔狅細涓浠芥槸鍗冮噷椹倽鐨勩婃父鎴忎腑姹夊瓧鏄劇ず鐨勫疄鐜頒笌鎶宸с嬶紝鍙︿竴浠芥槸鍏嶈垂鎵撳伐浠旂殑銆婅OGRE鏀寔涓枃銆嬨備粠涓壘鍒頒簡鍘熷洜錛?/p>
閫氳繃璺熻釜璋冭瘯錛屽彂鐜頒簡闂鎵鍦紝鍘熸潵緗瓉紲擱灝辨槸浠栵細 const FontGlyph *Font::getGlyphData (utf32 codepoint) { } 鍘熸潵CEGUI鏍規(guī)嵁Unicode瀛楃鐨勭紪鐮侀『搴忥紝涓烘瘡256涓瓧絎﹀垎閰嶄竴寮犵汗鐞嗭紙渚嬪緙栫爜0-255瀛樻斁鍦ㄧ汗鐞嗕竴錛岀紪鐮?68-1023 瀛樻斁鍦ㄧ汗鐞嗗洓錛夈傝嫳鏂囧緢瀹規(guī)槗鎼炲畾浜嗭紝閭d箞鍑犱釜瀛楃涓寮犵汗鐞嗗氨澶熶簡錛屽彲涓枃灝卞緱闈犺繍姘斾簡錛屾湁鏃舵樉紺哄嚑涓瓧灝辮鐢熸垚鍑犲紶綰圭悊錛岃繕瑕佸皢姣忓紶綰圭悊鐢ㄤ笉闇瑕佺殑鐩擱偦瀛楀~婊★紝鍔蟲皯浼よ儲錛?/p>
鍙戠幇浜嗛棶棰橈紝鎴戜究鎸夌収鍗冮噷椹倽鐨勬濇兂瀵瑰嚱鏁拌繘琛屼簡鏀歸狅紝灝嗕嬌鐢ㄧ殑鏂囧瓧鏀懼叆涓寮犵汗鐞嗕腑錛屽洜涓虹汗鐞嗘渶澶ф壙杞?56涓瓧錛屾墍浠ワ紝褰撴眽瀛楄秴榪?56涓椂錛屽垯灝嗕笉甯哥敤鐨勫幓鎺夛紝灝嗘柊鐨勫瓧絎﹀啓鍏ャ?/p>
鍚庢潵鎴戝彂鐜版眽瀛楃殑寮曠敤娌℃湁澶鐨勮寰嬶紝甯哥敤鐨勪竴鍗冨姹夊瓧鍑虹幇鐨勬鐜囨病鏈夐偅涔堟?zhèn)瑢D婏紙搴熻瘽錛岃涓嶆庝箞鏄父鐢ㄥ憿!錛夛紝娌℃湁鍔炴硶寰堝ソ鍦版寜鐓т嬌鐢ㄧ殑棰戠巼灝嗘眽瀛楅檺鍒跺湪256涓瓧浠ュ唴錛屽啓榪涚汗鐞嗭紝灝辯儲鎬т竴鏃︽弧浜嗗氨灝嗗瓧鍏ㄩ儴閲婃斁鎺夛紝閲嶆柊鍐欏叆銆傦紙涔熼渶鏈夋垜娌℃壘鍒幫紝榪樿楂樻墜鎸囨暀錛?/p>
浠g爜濡備笅錛?/p>
const FontGlyph *Font::getGlyphData (utf32 codepoint) { } void FreeTypeFont::rasterizeHZ (utf32 codepoint) { }
SOURCES +=main.cpp
CONFIG +=qt
ok 淇濆瓨銆?/p>
鎵撳紑鍛戒護琛岋紝鍒囨崲鐩綍鍒癶ello.cpp鎵鍦ㄧ洰褰曘傜敓鎴怣akefile鏂囦歡錛涜緭鍏ワ細
qmake -o Makefile hello.pro 錛?
鎺ヤ笅鏉ョ敓鎴愰」鐩枃浠?vcproj鏂囦歡銆?
qmake -tp vc -o hello.vcproj hello.pro
3錛岀洿鎺ヤ嬌鐢?span class=ColorResultsClass highlight="true" realoffset="1237" alpha-value="20">Qt Visual Studio Integration v1.2.2 for.VS.2003.2005鎻掍歡(璇﹁http://blog.csdn.net/znf19850924/archive/2008/01/16/2047373.aspx)
闇瑕侀厤緗?span class=ColorResultsClass highlight="true" realoffset="1384" alpha-value="20">濡備笅錛?/strong>
"Tools" -> "Options" -> "Qt" -> "Builds", 娣誨姞鎴戜滑鍒氭墠緙栬瘧鐨?span class=ColorResultsClass highlight="true" realoffset="1405" alpha-value="20">Qt浠g爜,鍚嶅瓧涓?Qt 4.3.2", 璺緞涓?yourqtinstallpath)
鍚姩涓涓柊鐨勫伐紼?
閫夋嫨"Qt projects" -> "Qt Application"綾誨瀷,杈撳叆宸ョ▼鍚嶅瓧,鍗曞嚮OK.
鍙屽嚮宸ョ▼鏂囦歡閲岄潰鐨?test.ui",椹笂鍑虹幇浜嗘墍瑙佸強鎵寰楃殑紿椾綋緙栬緫鍣?鍦ㄤ笂闈㈡坊鍔犱竴涓寜閽?
鍙屽嚮鎸夐挳,浜х敓鐩稿簲鐨勬秷鎭搷搴斿嚱鏁?
娣誨姞澶存枃浠?
#include <QMessageBox>
鍦ㄥ嚱鏁皏oid Test::on_pushButton_clicked()浣撳唴娣誨姞濡備笅浠g爜:
QMessageBox box(this);
box.setText("Haha, hit me.");
box.exec();