鏄劇ず鍥懼艦濡備綍閬垮厤闂儊錛屽浣曟彁楂樻樉紺烘晥鐜囨槸闂緱姣旇緝澶氱殑闂銆傝屼笖澶氭暟浜鴻涓篗FC鐨勭粯鍥懼嚱鏁版晥鐜囧緢浣庯紝鎬繪槸鎯沖姹傚叾瀹冪殑瑙e喅鏂規銆?br />MFC鐨勭粯鍥炬晥鐜囩殑紜笉楂樹絾涔熶笉宸紝鑰屼笖瀹冪殑緇樺浘鍑芥暟浣跨敤闈炲父綆鍗曪紝鍙浣跨敤鏂規硶寰楀綋錛屽啀鍔犱笂涓浜涙妧宸э紝鐢∕FC鍙互寰楀埌鏁堢巼寰堥珮鐨勭粯鍥劇▼搴忋?br />鎴戞兂灝辨垜闀挎湡錛堝懙鍛靛綋鐒朵篃鍙湁2騫村錛変嬌鐢∕FC緇樺浘鐨勭粡楠岃皥璋堟垜鐨勪竴浜涜鐐廣?br />
1銆佹樉紺虹殑鍥懼艦涓轟粈涔堜細闂儊錛?br />聽聽聽鎴戜滑鐨勭粯鍥捐繃紼嬪ぇ澶氭斁鍦∣nDraw鎴栬匫nPaint鍑芥暟涓紝OnDraw鍦ㄨ繘琛屽睆騫曟樉紺烘椂鏄敱OnPaint榪涜璋冪敤鐨勩傚綋紿楀彛鐢變簬浠諱綍鍘熷洜闇瑕侀噸緇樻椂錛屾繪槸鍏堢敤鑳屾櫙鑹插皢鏄劇ず鍖烘竻闄わ紝鐒跺悗鎵嶈皟鐢∣nPaint錛岃岃儗鏅壊寰寰涓庣粯鍥懼唴瀹瑰弽宸緢澶э紝榪欐牱鍦ㄧ煭鏃墮棿鍐呰儗鏅壊涓庢樉紺哄浘褰㈢殑浜ゆ浛鍑虹幇錛屼嬌寰楁樉紺虹獥鍙g湅璧鋒潵鍦ㄩ棯銆傚鏋滃皢鑳屾櫙鍒瘋緗垚NULL錛岃繖鏍鋒棤璁烘庢牱閲嶇粯鍥懼艦閮戒笉浼氶棯浜嗐傚綋鐒訛紝榪欐牱鍋氫細浣垮緱紿楀彛鐨勬樉紺轟貢鎴愪竴鍥紝鍥犱負閲嶇粯鏃舵病鏈夎儗鏅壊瀵瑰師鏉ョ粯鍒剁殑鍥懼艦榪涜娓呴櫎錛岃屽張鍙犲姞涓婁簡鏂扮殑鍥懼艦銆傛湁鐨勪漢浼氳錛岄棯鐑佹槸鍥犱負緇樺浘鐨勯熷害澶參鎴栬呮樉紺虹殑鍥懼艦澶鏉傞犳垚鐨勶紝鍏跺疄榪欐牱璇村茍涓嶅錛岀粯鍥劇殑鏄劇ず閫熷害瀵歸棯鐑佺殑褰卞搷涓嶆槸鏍規湰鎬х殑銆備緥濡傚湪OnDraw(CDC *pDC)涓繖鏍峰啓錛?br />pDC->MoveTo(0,0);
pDC->LineTo(100,100);
榪欎釜緇樺浘榪囩▼搴旇鏄潪甯哥畝鍗曘侀潪甯稿揩浜嗗惂錛屼絾鏄媺鍔ㄧ獥鍙e彉鍖栨椂榪樻槸浼氱湅瑙侀棯鐑併傚叾瀹炰粠閬撶悊涓婅錛岀敾鍥劇殑榪囩▼瓚婂鏉傝秺鎱㈤棯鐑佸簲璇ヨ秺灝戯紝鍥犱負緇樺浘鐢ㄧ殑鏃墮棿涓庣敤鑳屾櫙娓呴櫎灞忓箷鎵鑺辯殑鏃墮棿鐨勬瘮渚嬭秺澶т漢瀵歸棯鐑佺殑鎰熻浼氳秺涓嶆槑鏄俱傛瘮濡傦細娓呮灞忓箷鏃墮棿涓?s緇樺浘鏃墮棿涔熸槸涓?s錛岃繖鏍峰湪10s鍐呯殑榪炵畫閲嶇敾涓氨瑕侀棯鐑?嬈★紱濡傛灉娓呮灞忓箷鏃墮棿涓?s涓嶅彉錛岃岀粯鍥炬椂闂翠負9s錛岃繖鏍?0s鍐呯殑榪炵畫閲嶇敾鍙細闂儊涓嬈°傝繖涓篃鍙互璇曢獙錛屽湪OnDraw(CDC *pDC)涓繖鏍峰啓錛?br />for(int i=0;i<100000;i++)
{
pDC->MoveTo(0,i);
pDC->LineTo(1000,i);
}
鍛靛懙錛岀▼搴忔湁鐐瑰彉鎬侊紝浣嗘槸鑳借鏄庨棶棰樸?br />聽聽聽璇村埌榪欓噷鍙兘鍙堟湁浜鴻璇翠簡錛屼負浠涔堜竴涓畝鍗曞浘褰㈢湅璧鋒潵娌℃湁澶嶆潅鍥懼艦閭d箞闂憿錛熻繖鏄洜涓哄鏉傚浘褰㈠崰鐨勯潰縐ぇ錛岄噸鐢繪椂閫犳垚鐨勫弽宸瘮杈冨ぇ錛屾墍浠ユ劅瑙変笂瑕侀棯寰楀帀瀹充竴浜涳紝浣嗘槸闂儊棰戠巼瑕佷綆銆傞偅涓轟粈涔堝姩鐢葷殑閲嶇敾棰戠巼楂橈紝鑰岀湅璧鋒潵鍗翠笉闂紵榪欓噷錛屾垜灝辮鍐嶆寮鴻皟浜嗭紝闂儊鏄粈涔堬紵闂儊灝辨槸鍙嶅樊錛屽弽宸秺澶э紝闂儊瓚婂帀瀹熾傚洜涓哄姩鐢葷殑榪炵畫涓や釜甯т箣闂寸殑宸紓寰堝皬鎵浠ョ湅璧鋒潵涓嶉棯銆傚鏋滀笉淇★紝鍙互鍦ㄥ姩鐢葷殑姣忎竴甯т腑闂村姞涓寮犵函鐧界殑甯э紝涓嶉棯鎵嶆憿銆?br />
2銆佸浣曢伩鍏嶉棯鐑?br />聽聽聽鍦ㄧ煡閬撳浘褰㈡樉紺洪棯鐑佺殑鍘熷洜涔嬪悗錛屽鐥囦笅鑽氨濂藉姙浜嗐傞鍏堝綋鐒舵槸鍘繪帀MFC鎻愪緵鐨勮儗鏅粯鍒惰繃紼嬩簡銆傚疄鐜扮殑鏂規硶寰堝錛?br />* 鍙互鍦ㄧ獥鍙e艦鎴愭椂緇欑獥鍙g殑娉ㄥ唽綾葷殑鑳屾櫙鍒蜂粯NULL
* 涔熷彲浠ュ湪褰㈡垚浠ュ悗淇敼鑳屾櫙
聽聽聽static CBrush brush(RGB(255,0,0));
聽聽聽SetClassLong(this->m_hWnd,GCL_HBRBACKGROUND,(LONG)(HBRUSH)brush);
* 瑕佺畝鍗曚篃鍙互閲嶈澆OnEraseBkgnd(CDC* pDC)鐩存帴榪斿洖TRUE
聽聽聽榪欐牱鑳屾櫙娌℃湁浜嗭紝緇撴灉鍥懼艦鏄劇ず鐨勭‘涓嶉棯浜嗭紝浣嗘槸鏄劇ず涔熻薄鍓嶉潰鎵璇寸殑涓鏍鳳紝鍙樺緱涓鍥貢銆傛庝箞鍔烇紵榪欏氨瑕佺敤鍒板弻緙撳瓨鐨勬柟娉曚簡銆傚弻緙撳啿灝辨槸闄や簡鍦ㄥ睆騫曚笂鏈夊浘褰㈣繘琛屾樉紺轟互澶栵紝鍦ㄥ唴瀛樹腑涔熸湁鍥懼艦鍦ㄧ粯鍒躲傛垜浠彲浠ユ妸瑕佹樉紺虹殑鍥懼艦鍏堝湪鍐呭瓨涓粯鍒跺ソ錛岀劧鍚庡啀涓嬈℃х殑灝嗗唴瀛樹腑鐨勫浘褰㈡寜鐓т竴涓偣涓涓偣鍦拌鐩栧埌灞忓箷涓婂幓錛堣繖涓繃紼嬮潪甯稿揩錛屽洜涓烘槸闈炲父瑙勬暣鐨勫唴瀛樻嫹璐濓級銆傝繖鏍峰湪鍐呭瓨涓粯鍥炬椂錛岄殢渚跨敤浠涔堝弽宸ぇ鐨勮儗鏅壊榪涜娓呴櫎閮戒笉浼氶棯錛屽洜涓虹湅涓嶈銆傚綋璐村埌灞忓箷涓婃椂錛屽洜涓哄唴瀛樹腑鏈緇堢殑鍥懼艦涓庡睆騫曟樉紺哄浘褰㈠樊鍒緢灝忥紙濡傛灉娌℃湁榪愬姩錛屽綋鐒跺氨娌℃湁宸埆錛夛紝榪欐牱鐪嬭搗鏉ュ氨涓嶄細闂?br />
3銆佸浣曞疄鐜板弻緙撳啿
聽聽聽棣栧厛緇欏嚭瀹炵幇鐨勭▼搴忥紝鐒跺悗鍐嶈В閲婏紝鍚屾牱鏄湪OnDraw(CDC *pDC)涓細
CDC MemDC; //棣栧厛瀹氫箟涓涓樉紺鴻澶囧璞?br />CBitmap MemBitmap;//瀹氫箟涓涓綅鍥懼璞?br />
//闅忓悗寤虹珛涓庡睆騫曟樉紺哄吋瀹圭殑鍐呭瓨鏄劇ず璁懼
MemDC.CreateCompatibleDC(NULL);
//榪欐椂榪樹笉鑳界粯鍥撅紝鍥犱負娌℃湁鍦版柟鐢?^_^
//涓嬮潰寤虹珛涓涓笌灞忓箷鏄劇ず鍏煎鐨勪綅鍥撅紝鑷充簬浣嶅浘鐨勫ぇ灝忓槢錛屽彲浠ョ敤紿楀彛鐨勫ぇ灝?br />MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);
//灝嗕綅鍥鵑夊叆鍒板唴瀛樻樉紺鴻澶囦腑
//鍙湁閫夊叆浜嗕綅鍥劇殑鍐呭瓨鏄劇ず璁懼鎵嶆湁鍦版柟緇樺浘錛岀敾鍒版寚瀹氱殑浣嶅浘涓?br />CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
//鍏堢敤鑳屾櫙鑹插皢浣嶅浘娓呴櫎騫插噣錛岃繖閲屾垜鐢ㄧ殑鏄櫧鑹蹭綔涓鴻儗鏅?br />//浣犱篃鍙互鐢ㄨ嚜宸卞簲璇ョ敤鐨勯鑹?br />MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255));
//緇樺浘
MemDC.MoveTo(鈥︹?;
MemDC.LineTo(鈥︹?;
//灝嗗唴瀛樹腑鐨勫浘鎷瘋礉鍒板睆騫曚笂榪涜鏄劇ず
pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);
//緇樺浘瀹屾垚鍚庣殑娓呯悊
MemBitmap.DeleteObject();
MemDC.DeleteDC();
涓婇潰鐨勬敞閲婂簲璇ュ緢璇﹀敖浜嗭紝搴熻瘽灝變笉澶氳浜嗐?br />
聽