锘??xml version="1.0" encoding="utf-8" standalone="yes"?>午夜精品久久久久99热蜜桃导演,一区二区三区在线免费播放,久久精品欧美日韩http://www.shnenglu.com/flyinghare/category/11699.html鍏斿瓙zh-cnFri, 12 Apr 2013 09:26:17 GMTFri, 12 Apr 2013 09:26:17 GMT60緗戠粶娓告垙鐨勫鏃朵互鍙婂悓姝ラ棶棰?/title><link>http://www.shnenglu.com/flyinghare/archive/2013/04/12/199370.html</link><dc:creator>浼氶鐨勫厰瀛?/dc:creator><author>浼氶鐨勫厰瀛?/author><pubDate>Fri, 12 Apr 2013 04:20:00 GMT</pubDate><guid>http://www.shnenglu.com/flyinghare/archive/2013/04/12/199370.html</guid><wfw:comment>http://www.shnenglu.com/flyinghare/comments/199370.html</wfw:comment><comments>http://www.shnenglu.com/flyinghare/archive/2013/04/12/199370.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/flyinghare/comments/commentRss/199370.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/flyinghare/services/trackbacks/199370.html</trackback:ping><description><![CDATA[<div style="clear: both; color: #333333; font-family: 'trebuchet ms', verdana, helvetica, arial, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff;"><p style="margin-top: 10px; margin-bottom: 10px;">澶у鏁板疄鏃剁綉緇滄父鎴忥紝灝?server 鐨勬椂闂村拰 client 鐨勬椂闂存牎瀵逛竴鑷存槸鍙互甯︽潵璁稿鍏朵粬緋葷粺璁捐涓婄殑渚垮埄鐨勩傝繖閲岃鐨勫鏃訛紝騫墮潪鍘昏皟鏁?client 鐨?os 涓殑鏃墮挓錛岃屾槸鎶?game client 鍐呴儴鐨勯昏緫鏃墮棿璋冩暣璺?server 涓鑷村嵆鍙?/p><p style="margin-top: 10px; margin-bottom: 10px;">涓涓矖鐣ョ殑瀵規椂鏂規鍙互鏄繖鏍風殑錛宑lient 鍙戜竴涓暟鎹寘緇?server錛岄噷闈㈣褰曚笅鍙戦佹椂鍒匯俿erver 鏀跺埌鍚庯紝绔嬪埢緇欒繖涓暟鎹寘娣誨姞涓涓猻erver 褰撳墠鏃跺埢淇℃伅錛屽茍鍙戣繕緇?client 銆傚洜涓哄ぇ閮ㄥ垎鎯呭喌涓嬶紝game server 涓嶄細绔嬪埢澶勭悊榪欎釜鍖咃紝鎵浠ワ紝鍙互鍦ㄥ鐞嗘椂鍐嶅姞涓涓椂鍒匯備袱鑰呯浉鍑忥紝client 鍙互綆楀緱鍖呭湪 server 鍐呴儴鑰芥悂鏃墮棿銆?/p><p style="margin-top: 10px; margin-bottom: 10px;">client 鏀跺埌 server 鍙戣繕鐨勫鏃跺寘鏃訛紝鍥犱負浠栧彲浠ュ彇鍑哄綋鍒濆彂閫佹椂鑷繁闄勫姞鐨勬椂鍒諱俊鎭紝騫剁煡閬撳綋鍓嶆椂鍒伙紝涔熷氨鍙互綆楀嚭榪欎釜鏁版嵁鍖呮潵鍥炵殑琛岀▼鏃墮棿銆傝繖閲岋紝鎴戜滑鍋囧畾鏁版嵁鍖呮潵鍥炴椂闂寸浉鍚岋紝閭d箞鎶?server 閫氱煡鐨勬椂闂達紝鍔犱笂琛岀▼鏃墮棿鐨勪竴鍗婏紝鍒欏彲浠ュ皢 client 鏃墮棿鍜?server 鏃墮棿鏍″涓鑷淬?/p></div><div class="hvzpftn" id="more" style="clear: both; color: #333333; font-family: 'trebuchet ms', verdana, helvetica, arial, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff;"><p style="margin-top: 10px; margin-bottom: 10px;">榪欎釜榪囩▼鐢?udp 鍗忚鍋氭瘮鐢?tcp 鍗忚鏉ョ殑濂姐傚洜涓?tcp 鍗忚鍙兘鍥犱負涓㈠寘閲嶅彂寮曡搗鏁欏ぇ璇樊錛岃?udp 鍒欐槸鑷繁鎺у埗錛岃繖涓宸灝忕殑澶氥傚彧鏄紝鐜板湪緗戠粶娓告垙鐢?tcp 鍗忚瀹炵幇瑕佹瘮 udp 鏈変紭鍔跨殑澶氾紝鎴戜滑涔熶笉蹇呬負瀵規椂鍙﹁搗涓濂楀崗璁蛋 udp 銆?/p><p style="margin-top: 10px; margin-bottom: 10px;">涓鑸殑瑙e喅鏂規硶鐢ㄥ嬈℃牎瀵瑰氨鍙互浜嗐傚洜涓猴紝濡傛灉鍙屾柟鏃墮挓蹇參涓鑷寸殑鎯呭喌涓嬶紝瀵規椂鍖呭湪緗戠粶涓婅紼嬫椂闂磋秺鐭紝灝變竴瀹氳〃鏄庤宸秺灝忋傝繖涓宸槸涓嶄細瓚呰繃鍖呮潵鍥炴椂闂寸殑涓鍗婄殑銆傛垜浠竴鏃﹀湪瀵規椂榪囩▼涓緱鍒頒竴涓緢灝忕殑琛岀▼鏃墮棿錛屽茍鍦ㄦ垜浠父鎴忛昏緫鐨勬椂闂磋宸厑璁歌寖鍥村唴錛屽氨涓嶉渶瑕佸啀鏍″浜嗐?/p><p style="margin-top: 10px; margin-bottom: 10px;">鎴栬呮牎瀵瑰嬈★紝鍙戠幇緗戠粶姣旇緝紼沖畾錛堣櫧鐒剁綉閫熷緢鎱級錛屼篃鍙互璁や負鏍″鍑嗙‘銆傝繖縐嶆儏鍐典笅錛屾綔鍦ㄧ殑鏃墮棿璇樊鍙兘姣旇緝澶с傚ソ鍦紝涓鑸紝鎴戜滑鍦ㄦ椂闂存晱鎰熺殑鍖呬笂閮戒細鎼哄甫鏃墮棿鎴熾傚綋鍙屾柟鏃墮棿鏍″璇樊寰堝皬鐨勬椂鍊欙紝client 鍙戣繃鏉ョ殑鏃墮棿鎴蟲槸涓嶅簲璇ユ棭浜?server 鐪熷疄鏃跺埢鐨勩傦紙褰撴椂闂存牎瀵瑰噯紜悗錛宻erver 鏀跺埌鐨勫寘涓婄殑鏃墮棿鎴沖姞涓婃暟鎹寘鍗曡鏃墮棿錛屽簲璇ョ瓑浜?server 褰撳墠鏃跺埢錛?/p><p style="margin-top: 10px; margin-bottom: 10px;">涓鏃?server 鍙戠幇 client 鐨勫寘“鎻愬墠”鏀跺埌浜嗭紝鍙湁涓縐嶈В閲婏細褰撳垵鏍″鏃墮棿鏃剁碂緋曠殑緗戠粶鐘舵佸甫鏉ヤ簡寰堝鐨勬椂闂磋宸紝鑰岀幇鍦ㄧ殑緗戠粶鐘舵佽鏄庢樉浼樹簬閭d釜鏃跺欍傝繖鏃訛紝server 搴旇鍕掍護 client 閲嶆柊瀵規椂銆傚悓鐞嗭紝client 鍙戠幇 server 鐨勬暟鎹寘“鎻愬墠”鍒拌揪錛屼篃鍙互涓誨姩鍚?server 閲嶆柊瀵規椂銆?/p><p style="margin-top: 10px; margin-bottom: 10px;">涓涓壇濂界殑瀵規椂鍗忚鐨勮瀹氾紝鍦ㄥ崗璁笂閬垮厤 client 鏃墮棿浣滃紛錛堟瘮濡傚姞閫熷櫒錛屾垨鑰呭噺閫熷櫒錛夋槸鍙鐨勩傝繖閲屼笉璁ㄨ涔熶笉鍒嗘瀽鏇撮珮綰х殑鍒╃敤娓告垙閫昏緫鍘繪椂闂翠綔寮婄殑鏂瑰紡錛屾垜浠粰鏁版嵁鍖呮墦涓婃椂闂存埑鐨勪富瑕佺洰鐨勪篃闈為槻姝㈡椂闂翠綔寮娿?/p><p style="margin-top: 10px; margin-bottom: 10px;">鏍″鏃墮棿鐨勪竴鑸敤閫旀槸鐢ㄦ潵瀹炵幇鏇存祦鐣呯殑鎴樻枟緋葷粺鍜屼綅緗悓姝ャ傚洜涓轟笉渚濊禆緗戠粶浼犺緭鐨勭粺涓鏃墮棿鍙傜収鏍囧噯鍙互浣挎父鎴忕湅璧鋒潵鏇翠負瀹炴椂銆?/p><p style="margin-top: 10px; margin-bottom: 10px;">棣栧厛璋堣皥浣嶇疆鍚屾銆?/p><p style="margin-top: 10px; margin-bottom: 10px;">濂界殑浣嶇疆鍚屾涓瀹氳鑰冭檻緗戠粶寤惰繜鐨勫獎鍝嶏紝鎵浠ワ紝綆鍗曟妸 entity 鐨勫潗鏍囧箍鎾埌 clients 涓嶆槸涓涓ソ鐨勬柟妗堛傛垜浠簲璇ュ悓姝ョ殑鏄竴涓繍鍔ㄧ煝閲忎互鍙婃椂闂翠俊鎭傛棦錛屾棤璁烘槸 client 榪樻槸 server 錛屽彂鍑哄拰鏀跺埌鐨勪俊鎭兘搴旇鏄瘡涓?entity 鍦ㄦ煇涓椂鍒葷殑浣嶇疆鍜岃繍鍔ㄦ柟鍚戙傝繖鏍鳳紝鎺ユ敹鏂瑰彲浠ユ牴鎹敹鍒扮殑鏃跺埢錛屼及綆楀嚭 entity 鐨勭湡瀹炰綅緗傚浜?server 涓鏂圭殑澶勭悊錛屽彧瑕佽姹?client 鎸変竴涓鐜?涓鑸潵璇存垬鏂楁椂 10Hz 鍗沖彲錛岃岄潪鎴樻枟鐘舵佹垨 player 涓嶆敼鍙樿繍鍔ㄧ姸鎬佹椂鍙互鏇翠綆) 緇欏畠鍙戦佷綅緗俊鎭俿erver 鍙互鍦ㄧ綉緇滅姸鎬佷笉濂界殑鎯呭喌涓嬩緷鎹渶榪戞敹鍒扮殑鍖呬及綆楀嚭鐜板湪 player 浣嶇疆銆傝?client 鍙戝嚭鐨勬瘡嬈?player 浣嶇疆淇℃伅錛岄兘搴旇琚?server 淇′換錛岀敤鏉ュ幓淇涓婃鐨勪及綆楀箋傝?server 瑕佸仛鐨勫彧鏄娊鏌ワ紝鎴栦氦緇欏彟涓涓ā鍧楀幓鏍¢獙鏁版嵁鍖呯殑鍚堟硶鎬э紙闃叉浣滃紛錛夈?/p><p style="margin-top: 10px; margin-bottom: 10px;">鍦?server 绔紝姣忎釜 entity 鐨勪綅緗寜 10Hz 鐨勯鐜囧仛紱繪暎榪愬姩鍗沖彲銆?/p><p style="margin-top: 10px; margin-bottom: 10px;">client 鍥犱負娑夊強鏄劇ず闂錛岀帺瀹跺笇鏈涚湅鍒扮殑鏄?entity 鐨勮繛緇繍鍔紝鎵浠ュ鐞嗚搗鏉ラ夯鐑︿竴鐐廣俿erver 鍙戣繃鏉ョ殑浣嶇疆鍚屾淇℃伅涔熷彲鑳藉洜涓虹綉緇滃歡榪熸櫄鏀跺埌銆俢lient 鍚屾牱鏍規嵁鏈榪戞敹鍒扮殑鍖呭仛浼扮畻錛屼絾鏄啀鏀跺埌鐨勫寘鍜屼箣鍓嶅凡緇忔敹鍒扮殑淇℃伅浼扮畻緇撴灉涓嶅悓鐨勬椂鍊欙紝搴旇鍋氱殑鏄繍鍔ㄦ柟鍚戝拰閫熷害鐨勪慨姝o紝灝藉彲鑳界殑璁╀笅嬈$殑浼扮畻鏇村噯紜?/p><p style="margin-top: 10px; margin-bottom: 10px;">鍏充簬鎴樻枟鎸囦護鍚屾錛屾垜甯屾湜鏄粰鎵鏈夋垬鏂楁寚浠ら兘鍔犱笂鍐峰嵈鏃墮棿鍜屽紩瀵兼椂闂達紝榪欐鏄?wow 鐨勮璁°傝繖鏍鳳紝淇′換 client 鐨勬椂闂存埑錛屽氨鍙互寰楀埌 client 鍑嗙‘鐨勬寚浠や笅杈炬椂闂淬傚紩瀵兼椂闂達紙鎴栬呮槸鍏叡鍐峰嵈鏃墮棿錛夊彲浠ュ厖褰撶綉緇滃歡榪熸椂闂寸殑緙撳啿銆傚綋鐒舵垜浠幇鍦ㄧ殑璁捐浼氭洿澶嶆潅涓浜涳紝榪欓噷涓嶅啀鍒楀嚭銆傚浜庤窛紱繪晱鎰熺殑鎶鑳斤紝渚嬪榪滅▼鏀誨嚮鍜岃寖鍥撮瓟娉曪紝鎴戜滑鐨勮璁℃槸鏈変竴涓ā緋婄殑 miss 鍒ゅ畾鍏紡錛岃В鍐寵窛紱昏竟鐣岀殑鍒ゅ畾闂銆?/p><p style="margin-top: 10px; margin-bottom: 10px;">榪欓噷錛?server 瀵規敾鍑葷洰鏍囩殑浣嶇疆鍋氫及綆楃殑鏃跺欙紝鍙互涓嶆寜涓婃鍙戝嚭鍖呯殑榪愬姩鏂瑰悜鍘誨仛浣嶇疆浼拌錛岃岄夋嫨鐢ㄦ渶鏈夊埄浜庤鏀誨嚮鑰呯殑榪愬姩鏂瑰悜鏉ュ仛銆傝繖鏍鳳紝鍙互鍑忓皯緗戠粶鐘跺喌宸殑鐜╁鐨勫姡鍔褲?/p><p style="margin-top: 10px; margin-bottom: 10px;">瀵逛簬 PVE 鐨勬垬鏂楋紝鐢氳嚦鍙互鍋氭洿澶氱殑鍙栬垗錛岃揪鍒版父鎴忔祦鐣呯殑鏁堟灉銆傛瘮濡備竴涓綉緇滅姸鎬佸樊鐨勭帺瀹跺幓鎵?npc錛屼粬鏀誨嚮 npc 鐨勬椂鍒伙紝npc 鏄浜庢敾鍑昏寖鍥翠箣鍐呯殑銆備絾鏄敱浜庣綉緇滃歡榪燂紝鏁版嵁鍖呰 server 鏀跺埌鐨勬椂鍊欙紝npc 宸茬粡紱誨紑銆傝繖涓椂鍊?server 鍙互浠?client 鐨勯昏緫鏉ュ皢 npc 鎷変細鍘熸潵鐨勫潗鏍囥?/p><p style="margin-top: 10px; margin-bottom: 10px;">铏界劧錛岃繖鏍峰仛錛屽彲鑳戒細寮曡搗鍏朵粬鐜╁錛堟梺瑙傝咃級 client 涓婅〃鐜扮殑涓嶅悓銆備絾鏄紝緗戠粶娓告垙寰堝鎯呭喌涓嬫槸涓嶉渶瑕佷弗鏍煎悓姝ョ殑銆傚湪涓嶅獎鍝嶄富瑕佹父鎴忛昏緫鐨勬儏鍐典笅錛宲layer 鐨勬墜鎰熸洿涓洪噸瑕併?/p></div>杞嚜錛?a >http://blog.codingnow.com/2006/04/sync.html#comments</a><img src ="http://www.shnenglu.com/flyinghare/aggbug/199370.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/flyinghare/" target="_blank">浼氶鐨勫厰瀛?/a> 2013-04-12 12:20 <a href="http://www.shnenglu.com/flyinghare/archive/2013/04/12/199370.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title> (杞? cocos2dX 澶氱嚎紼?/title><link>http://www.shnenglu.com/flyinghare/archive/2012/10/15/193327.html</link><dc:creator>浼氶鐨勫厰瀛?/dc:creator><author>浼氶鐨勫厰瀛?/author><pubDate>Mon, 15 Oct 2012 10:01:00 GMT</pubDate><guid>http://www.shnenglu.com/flyinghare/archive/2012/10/15/193327.html</guid><wfw:comment>http://www.shnenglu.com/flyinghare/comments/193327.html</wfw:comment><comments>http://www.shnenglu.com/flyinghare/archive/2012/10/15/193327.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/flyinghare/comments/commentRss/193327.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/flyinghare/services/trackbacks/193327.html</trackback:ping><description><![CDATA[鏈榪戜嬌鐢–ocos2d-x寮鍙戞父鎴忥紝鍙戠幇Cocos2d-x鐨勫唴瀛樼鐞嗛噰鐢∣bjective-C鐨勬満鍒訛紝澶у枩榪囨湜銆傚洜涓哄彧瑕佸潥鎸丱bjective-C鐨勫師鍒?#8220;璋佸垱寤鴻皝閲婃斁錛岃皝澶囦喚璋侀噴鏀?#8221;鐨勫師鍒欏嵆鍙‘淇濆唴瀛樹嬌鐢ㄤ笉鏄撳嚭鐜癇ug銆?br style="word-wrap: break-word; " />浣嗘槸鍥犱負鏈韓寮鏀劇殑娓告垙闇瑕佷嬌鐢ㄥ埌澶氱嚎紼嬫妧鏈紝瀵艱嚧嫻嬭瘯鐨勬椂鍊欐繪槸鑾悕鍏跺鐨勫鑷寸┖鎸囬拡閿欒銆傝屼笖鏄殢鏈哄嚭鐜幫紝綰犵粨浜?澶╂棤鏋滃悗錛屽紑濮嬫鐤慍ocos2d-X鐨勫唴瀛樻湰韜鐞嗗彲鑳藉瓨鍦ㄩ棶棰樸傛鐫榪欐牱鐨勬兂娉曪紝<br style="word-wrap: break-word; " />涓姝ヤ竴姝ョ殑璋冭瘯錛屽彂鐜扮粡甯稿嚭鐜版寚閽堝紓甯哥殑鍙橀噺鎬繪槸鍦ㄨ皟鐢╝utorelease鍚庝竴浼氬氨鑾悕鍏跺鍐嶄嬌鐢ㄧ殑鏃跺欏氨鎶涘紓甯搞傜嫚涓嬪績錛屽湪瀹冪殑鏋愭瀯鍑芥暟閲岄潰鏂偣+Log杈撳嚭淇℃伅銆傚彂鐜板璞¤閲婃斁浜嗐備竴鏃朵篃寰堣糠緋婏紝鍥犱負瀵硅薄鍙槸<br style="word-wrap: break-word; " />autorelease,騫舵病鏈夌湡姝i噴鏀撅紝鏄皝瀵艱嚧瀹冮噴鏀劇殑錛?br style="word-wrap: break-word; " /><br style="word-wrap: break-word; " />鐒跺悗灝卞幓鐪嬩簡CCAutoreleasePool鐨勬簮鐮侊紝鍙戠幇瀛樺湪Cocos2d-X鐨勫唴瀛樼鐞嗗湪澶氱嚎紼嬬殑鎯呭喌涓嬪瓨鍦ㄥ涓嬮棶棰?br style="word-wrap: break-word; " /><br style="word-wrap: break-word; " /><img src="http://www.shnenglu.com/images/cppblog_com/flyinghare/cocos2d_autorelease.png" width="575" height="256" alt="" /><br style="word-wrap: break-word; " /><br />濡傚浘錛歵hread 1鍜宼hread 2鏄嫭绔嬬殑涓や釜綰跨▼錛屽畠浠箣闂村瓨鍦–PU鍒嗛厤鐨勪氦鍙夐泦錛屾垜浠湪time 1鐨勬椂鍊檖ush涓涓猘utorelease鐨勮嚜鍔ㄩ噴鏀炬睜錛屽湪璇ョ嚎紼嬬殑鏈熬錛屽嵆time 3鐨勬椂鍊檖op瀹冦傚悓鐞嗗湪thread 2鐨勭嚎紼嬮噷闈紝鍦╰ime 2鐨勬椂鍊檖ush涓涓嚜鍔ㄩ噴鏀炬睜錛屽湪time 4鐨勬椂鍊欓噴鏀懼畠錛屽嵆Pop.<br style="word-wrap: break-word; " />姝ゆ椂鎴戜滑鍋囪鍦╰hread 2鍒嗛厤寰楀埌CPU鐨勬椂鍊欐湁涓涓璞bj鑷姩閲婃斁錛屽嵆obj-autorelease().<strong style="word-wrap: break-word; ">閭d箞鍦╰ime 3鐨勬椂鍊欎細鍙戠敓鏄箞浜嬫儏鍛紵</strong><br style="word-wrap: break-word; " /><strong style="word-wrap: break-word; ">絳旀寰堢畝鍗曪紝灝辨槸obj鍦╰ime 3鐨勬椂鍊欏氨琚噴鏀句簡錛岃屾垜浠湡鏈涘畠鍦╰ime 4鐨勬椂鍊欐墠閲婃斁銆傛墍浠ュ氨瀵艱嚧鎴戜笂闈㈣鐨勶紝鍦ㄥ綰跨▼涓嬮潰錛宑ocos2d-x鐨刟utorelease鍙橀噺浼氬彂鐢熻帿鍚嶅叾濡欑殑鎸囬拡寮傚父銆?/strong><br style="word-wrap: break-word; " /><br style="word-wrap: break-word; " /><br style="word-wrap: break-word; " /><strong style="word-wrap: break-word; ">瑙e喅鍔炴硶錛?/strong>鍦≒oolManager緇欐瘡涓嚎紼嬫牴鎹畃thread_t鐨勭嚎紼媔d鐢熸垚涓涓狢CArray鐨剆tack鐨勫祵濂楃鐞嗚嚜鍔ㄩ噴鏀炬睜銆傛簮鐮佸涓?br style="word-wrap: break-word; " />鎵浠ユ垜鍦≒ush鐨勬椂鍊欐牴鎹綋鍓嶇嚎紼嬬殑pthread_t鐨勭嚎紼媔d鐢熸垚涓涓狢CArray鐨剆tack鏉ュ瓨鍌ㄨ綰跨▼瀵瑰簲鐨凙utoreleasepool鐨勫祵濂楀璞?br style="word-wrap: break-word; " />婧愮爜濡備笅<br style="word-wrap: break-word; " /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Simsun; background-color: #ffffff; " />   <table cellspacing="0" style="word-wrap: break-word; empty-cells: show; border-collapse: collapse; border-style: solid; border-color: #e3edf5; table-layout: auto; width: 801px; "><tbody style="word-wrap: break-word; "><tr style="word-wrap: break-word; "><td style="word-wrap: break-word; font-size: 14px; padding: 4px; border-style: solid; border-color: #e3edf5; overflow: hidden; "><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">1</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">2</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">3</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">4</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">5</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">6</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">7</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">8</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">9</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">10</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">11</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">12</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">13</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">14</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">15</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">16</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">17</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">18</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">19</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">20</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">21</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">22</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">23</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">24</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">25</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">26</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">27</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">28</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">29</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">30</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">31</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">32</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">33</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">34</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">35</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">36</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">37</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">38</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">39</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">40</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">41</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">42</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">43</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">44</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">45</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">46</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">47</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">48</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">49</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">50</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">51</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">52</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">53</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">54</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">55</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">56</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">57</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">58</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">59</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">60</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">61</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">62</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">63</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">64</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">65</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">66</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">67</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">68</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">69</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">70</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">71</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">72</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">73</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">74</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">75</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">76</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">77</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">78</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">79</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">80</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">81</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">82</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">83</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">84</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">85</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">86</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">87</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">88</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">89</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">90</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">91</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">92</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">93</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">94</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">95</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">96</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">97</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">98</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">99</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">100</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">101</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">102</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">103</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">104</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">105</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">106</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">107</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">108</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">109</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">110</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">111</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">112</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">113</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">114</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">115</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">116</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">117</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">118</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">119</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">120</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">121</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">122</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">123</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">124</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">125</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">126</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">127</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">128</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">129</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">130</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">131</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">132</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">133</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">134</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">135</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">136</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">137</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">138</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">139</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">140</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">141</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">142</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">143</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">144</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">145</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">146</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">147</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">148</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">149</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">150</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">151</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">152</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">153</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">154</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">155</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">156</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">157</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">158</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">159</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">160</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">161</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">162</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">163</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">164</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">165</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">166</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">167</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">168</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">169</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">170</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">171</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">172</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">173</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">174</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">175</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">176</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">177</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">178</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">179</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">180</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">181</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">182</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">183</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">184</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">185</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">186</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">187</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">188</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">189</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">190</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">191</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">192</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">193</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">194</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">195</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">196</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">197</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">198</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">199</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">200</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">201</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">202</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">203</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">204</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">205</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">206</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">207</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">208</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">209</p><p align="right" style="word-wrap: break-word; margin: 0px; padding: 0px; ">210</p></td><td style="word-wrap: break-word; font-size: 14px; padding: 4px; border-style: solid; border-color: #e3edf5; overflow: hidden; "><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">//--------------------------------------------------------------------</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">//</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">// CCPoolManager</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">//</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">//--------------------------------------------------------------------</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">/////銆恉iff - begin銆? by layne//////</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">CCPoolManager* CCPoolManager::sharedPoolManager()</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">{</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    if (s_pPoolManager == NULL)</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    {</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">        s_pPoolManager = new CCPoolManager();</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    }</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    return s_pPoolManager;</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">}</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">void CCPoolManager::purgePoolManager()</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">{</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    CC_SAFE_DELETE(s_pPoolManager);</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">}</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">CCPoolManager::CCPoolManager()</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">{</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    m_pReleasePoolStack = new CCArray();   </p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    m_pReleasePoolStack->init();</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    m_pCurReleasePool = 0;</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    m_pReleasePoolMultiStack = new CCDictionary();</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">}</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">CCPoolManager::~CCPoolManager()</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">{</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    finalize();</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    // we only release the last autorelease pool here</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    m_pCurReleasePool = 0;</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    m_pReleasePoolStack->removeObjectAtIndex(0);</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //   </p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    CC_SAFE_DELETE(m_pReleasePoolStack);</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    finalize();</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    CC_SAFE_DELETE(m_pReleasePoolMultiStack);</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">}</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">void CCPoolManager::finalize()</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">{</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    if(m_pReleasePoolMultiStack->count() > 0)</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    {</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">        //CCAutoreleasePool* pReleasePool;</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">        CCObject* pkey = NULL;</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">        CCARRAY_FOREACH(m_pReleasePoolMultiStack->allKeys(), pkey)</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">        {</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">            if(!pkey)</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">                break;</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">            CCInteger *key = (CCInteger*)pkey;</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">            CCArray *poolStack = (CCArray *)m_pReleasePoolMultiStack->objectForKey(key->getValue());</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">            CCObject* pObj = NULL;</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">            CCARRAY_FOREACH(poolStack, pObj)</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">            {</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">                if(!pObj)</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">                    break;</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">                CCAutoreleasePool* pPool = (CCAutoreleasePool*)pObj;</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">                pPool->clear();</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">            }</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">        }</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    }</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">}</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">void CCPoolManager::push()</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">{</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    CCAutoreleasePool* pPool = new CCAutoreleasePool();       //ref = 1</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    m_pCurReleasePool = pPool;</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //   </p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    m_pReleasePoolStack->addObject(pPool);                   //ref = 2</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //   </p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    pPool->release();                                       //ref = 1</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    pthread_mutex_lock(&m_mutex);</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    CCArray* pCurReleasePoolStack = getCurReleasePoolStack();</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    CCAutoreleasePool* pPool = new CCAutoreleasePool();         //ref = 1</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    pCurReleasePoolStack->addObject(pPool);                               //ref = 2</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    pPool->release();                                           //ref = 1   </p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    pthread_mutex_unlock(&m_mutex);</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">}</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">void CCPoolManager::pop()</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">{</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    if (! m_pCurReleasePool)</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    {</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //        return;</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    }</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //   </p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    int nCount = m_pReleasePoolStack->count();</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //   </p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    m_pCurReleasePool->clear();</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //   </p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    if(nCount > 1)</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    {</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //        m_pReleasePoolStack->removeObjectAtIndex(nCount-1);</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //        </p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //        //         if(nCount > 1)</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //        //         {</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //        //             m_pCurReleasePool = m_pReleasePoolStack->objectAtIndex(nCount - 2);</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //        //             return;</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //        //         }</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //        m_pCurReleasePool = (CCAutoreleasePool*)m_pReleasePoolStack->objectAtIndex(nCount - 2);</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    }</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //   </p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    /*m_pCurReleasePool = NULL;*/</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    pthread_mutex_lock(&m_mutex);   </p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    CCArray* pCurReleasePoolStack = getCurReleasePoolStack();</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    CCAutoreleasePool* pCurReleasePool = getCurReleasePool();   </p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    if (pCurReleasePoolStack && pCurReleasePool)</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    {</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">        int nCount = pCurReleasePoolStack->count();</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">        pCurReleasePool->clear();</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">        if(nCount > 1)</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">        {</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">            pCurReleasePoolStack->removeObject(pCurReleasePool);</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">        }</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    }</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    pthread_mutex_unlock(&m_mutex);</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">}</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">void CCPoolManager::removeObject(CCObject* pObject)</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">{</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    CCAssert(m_pCurReleasePool, "current auto release pool should not be null");</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //   </p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    m_pCurReleasePool->removeObject(pObject);</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    pthread_mutex_lock(&m_mutex);</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    CCAutoreleasePool* pCurReleasePool = getCurReleasePool();</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    CCAssert(pCurReleasePool, "current auto release pool should not be null");</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    pCurReleasePool->removeObject(pObject);</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    pthread_mutex_unlock(&m_mutex);   </p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">}</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">void CCPoolManager::addObject(CCObject* pObject)</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">{</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    getCurReleasePool()->addObject(pObject);</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    pthread_mutex_lock(&m_mutex);   </p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    CCAutoreleasePool* pCurReleasePool = getCurReleasePool(true);</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    CCAssert(pCurReleasePool, "current auto release pool should not be null");</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    pCurReleasePool->addObject(pObject);</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    pthread_mutex_unlock(&m_mutex);     </p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">}</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">CCArray* CCPoolManager::getCurReleasePoolStack()</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">{</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    CCArray* pPoolStack = NULL;</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    pthread_t tid = pthread_self();</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    if(m_pReleasePoolMultiStack->count() > 0)</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    {</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">        pPoolStack = (CCArray*)m_pReleasePoolMultiStack->objectForKey((int)tid);</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    }</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    if (!pPoolStack) {</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">        pPoolStack = new CCArray();</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">        m_pReleasePoolMultiStack->setObject(pPoolStack, (int)tid);</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">        pPoolStack->release();</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    }</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    return pPoolStack;</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">}</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">CCAutoreleasePool* CCPoolManager::getCurReleasePool(bool autoCreate)</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">{</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    if(!m_pCurReleasePool)</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    {</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //        push();</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    }</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //   </p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    CCAssert(m_pCurReleasePool, "current auto release pool should not be null");</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //   </p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    //    return m_pCurReleasePool;</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    CCAutoreleasePool* pReleasePool = NULL;</p><br style="word-wrap: break-word; " /><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    CCArray* pPoolStack = getCurReleasePoolStack();</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    if(pPoolStack->count() > 0)</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    {</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">        pReleasePool = (CCAutoreleasePool*)pPoolStack->lastObject();</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    }</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    if (!pReleasePool && autoCreate) {</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">        CCAutoreleasePool* pPool = new CCAutoreleasePool();         //ref = 1</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">        pPoolStack->addObject(pPool);                               //ref = 2</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">        pPool->release();                                           //ref = 1</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">        pReleasePool = pPool;</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    }</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">    return pReleasePool;</p><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">}</p><br style="word-wrap: break-word; " /><p align="left" style="word-wrap: break-word; margin: 0px; padding: 0px; ">/////銆恉iff - end銆? by layne//////</p></td></tr></tbody></table><br style="word-wrap: break-word; " /><br style="word-wrap: break-word; " /><br style="word-wrap: break-word; " /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Simsun; background-color: #ffffff; " /><br style="word-wrap: break-word; " /><br style="word-wrap: break-word; " />杞嚜錛?a >http://www.ityran.com/thread-3364-1-1.html</a><img src ="http://www.shnenglu.com/flyinghare/aggbug/193327.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/flyinghare/" target="_blank">浼氶鐨勫厰瀛?/a> 2012-10-15 18:01 <a href="http://www.shnenglu.com/flyinghare/archive/2012/10/15/193327.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>璺戞鐨勫ソ澶?/title><link>http://www.shnenglu.com/flyinghare/archive/2012/05/15/174954.html</link><dc:creator>浼氶鐨勫厰瀛?/dc:creator><author>浼氶鐨勫厰瀛?/author><pubDate>Tue, 15 May 2012 03:36:00 GMT</pubDate><guid>http://www.shnenglu.com/flyinghare/archive/2012/05/15/174954.html</guid><wfw:comment>http://www.shnenglu.com/flyinghare/comments/174954.html</wfw:comment><comments>http://www.shnenglu.com/flyinghare/archive/2012/05/15/174954.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/flyinghare/comments/commentRss/174954.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/flyinghare/services/trackbacks/174954.html</trackback:ping><description><![CDATA[<span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">1.鍛婂埆鑷冭偪韜潗銆?nbsp;</span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">璁稿浜哄紑濮嬭窇姝ュ氨鏄洜涓哄噺鑲ワ紝璺戞紜疄鍑忚偉鐨勬渶濂借繍鍔ㄦ柟寮忥紝璺戞姣忓垎閽熸瘮璧峰叾浠栬繍鍔ㄧ噧鐑ф洿澶氱殑鍗¤礬閲屻?nbsp;</span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">2.闃叉浣犵殑楠ㄩ錛岃倢鑲夐鍖栥?nbsp;</span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">鎴戜滑鐨勯楠兼槸鍜屼綘鐨勮韓浣撻渶姹傜浉浜掑崗璋冪殑銆傞暱鏈熷潗鍦ㄦ樉紺哄櫒鍓嶇殑鎴戜滑璁╂垜浠殑楠ㄩ瓚婃潵瓚婅剢寮便傝岄暱鏈熺殑錛岀粡甯哥殑榪愬姩浼氫嬌浣犵殑楠ㄩ淇濇寔鍋ュ悍銆傛洿榪涗竴姝ヨ灝辨槸闃叉鎴戜滑韜綋鍐呴儴鑰佸寲鐨勬洿蹇傜粡甯哥殑楂樺己搴﹂敾鐐鹼紝渚嬪璺戞錛岃璇佹槑鍙互淇冭繘浜轟綋鑽峰皵钂欑殑鐢熼暱錛岃嵎灝旇挋灝辨槸閭d簺鍚嶄漢涓轟簡鐪嬭搗鏉ユ洿騫磋交鑰屾寔緇敞灝勭殑鑽墏銆?nbsp;</span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">3.鎶墊姉鐤劇梾 </span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">璺戞鍙互闄嶄綆寰椾腑椋庡拰涔寵吅鐧岀殑椋庨櫓銆傜粡甯哥殑璺戞宸茬粡鎴愪負鍖葷敓瀵歸偅浜涘鏄撳紩鍙戞垨鍦ㄥ凡緇忓鍦ㄦ棭鏈熺殑楠ㄨ川鐤忔澗錛岀硸灝跨梾錛岄珮琛鍘嬬梾浜虹殑娌葷枟寤鴻銆?nbsp;</span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">4.緇存寔騫舵彁楂樻諱綋鐨勮韓浣撴按騫熾?nbsp;</span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">璺戞鏄槸浜轟滑鍙互閲囧彇鐨勬渶濂界殑閿葷偧韜綋鐨勮繍鍔ㄣ傚畠鍙互鎻愰珮鑳嗗浐閱?闄嶄綆琛娑插嚌鍧楃殑鍗遍櫓錛岄敾鐐間綘鐨?0%鐨勭粡甯稿浜庨棽緗姸鎬佺殑鑲恒傝窇姝ヨ繕鍙互閫氳繃澧炲姞浣犵殑娣嬪反緇嗚優鏉ュ寮轟綘鐨勫厤鐤姏銆?nbsp;</span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">5.璁╀綘鏇村姞鑷俊銆?nbsp;</span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">鎱㈣窇鍍忓叾浠栦竴浜涘崟浜鴻繍鍔ㄤ竴鏍鳳紝瀹冨彲浠ュ寮轟綘鐨勮嚜淇″績銆傝窇姝ヨ浣犲畬鎴愪竴嬈″張涓嬈$殑灝濊瘯錛岃浣犲彉寰楁洿寮哄ぇ錛屾洿鍔犺偗瀹氳嚜宸便備粬璁╀綘鐪熷疄鐨勮秺榪囨煇涓北宄幫紝絀胯繃鏌愪釜闅滅.鍦ㄦ剰璇嗗埌浣犵殑韜綋宸茬粡鏇村姞寮哄.錛屾洿鍔犳湁鐢紝浣犱細寰楀埌琚祴浜堝姏閲忓拰鑷敱鐨勬劅瑙夈傝嚜淇℃洿鏄偅浜涢氳繃璺戞鎴愬姛鐨勫噺鑲ュ茍寰楀埌鑷繁蹇冧腑鐞嗘兂韜潗鐨勮窇姝ヨ呯殑瀹濊吹璐㈠瘜銆?nbsp;</span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">6.鏀炬澗鑷繁錛屽噺杞誨帇鍔涖?nbsp;</span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">鎱㈣窇鍙互杞Щ鑱傛敞鎰忓姏錛屾矏嫻村湪璺梺鐨勯鏅腑錛屼綘鐨勭儲鎭間竴瀹氫細娑堝け孌嗗敖銆?nbsp;</span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">闀胯窇閫傚悎閭d簺姝e鍦ㄤ竴鍫嗗ご鐤鹼紝鎭間漢鐨勭儲蹇冧簨鐨勪漢銆傝繕鏈夋瘮鍦ㄤ袱涓皬鏃剁殑闀胯窇涓紝娓呯悊鐨勭殑澶磋剳銆佽垝緙撹嚜宸辯殑紲炵粡鏇村ソ鐨勪富鎰忎簡鍚椼?nbsp;</span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">濡傛灉浣犳鏃惰寰楀紓甯稿帇鎶戯紝浣曚笉蹇窇涓涓嬪憿錛屼箣鍚庝綘浼氫竴涓ソ鐨勫績鎯呫?nbsp;</span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">7.钁楀悕鐨?#8220;璺戞鑰呴珮宄頒綋楠?#8221; </span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">鍖呮嫭閲婃斁鍘嬪姏錛屾參璺戣璇佹槑鎻愰珮浣犵殑蹇冩併傝窇姝ワ紝鐗瑰埆鍦ㄦ埛澶栧拰鏃呰涓?浼氫嬌韜綋閲婃斁涓縐嶇墿璐ㄨ浣犱駭鐢熶竴縐嶅垢紱忔剦鎮︽劅錛堣窇姝ヨ呴珮宄頒綋楠岋級鎴栬呭氨鏄揩涔愮殑鎰熻銆傝窇姝ュ凡緇忚閲囩敤浜嗗騫存潵娌葷枟涓村簥鎶戦儊鐥囷紝涓婄樉絳夈傛洿灝戠殑鍘嬪姏錛屾洿灝戠殑鍘嬫姂錛屾洿灝戠殑鐤插姵錛屾洿灝戠殑娣蜂貢錛岀粡榪囦竴孌墊椂闂寸殑緇忓父璺戞錛岀梾浜哄緢蹇氨鏈変簡鍙樺寲銆傝窇姝ヨ浠栦滑鏈変簡娉ㄦ剰鐨勫璞★紝璁╀粬浠湅鍒頒簡闄や簡浠栦滑娑堟瀬鐨勭姸鎬佸拰娌夋漢鐨勪簨鍔★紝榪樻湁涓浜涚編濂界殑涓滆タ鐨勫瓨鍦ㄣ?nbsp;</span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">8.閿葷偧浣犵殑澶磋剳銆?nbsp;</span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">鍍忓浣犵殑韜綋鏈夋墍甯姪涓鏍鳳紝璺戞鍚屾牱瀵逛綘鐨勫ご鑴戝緢鏈夊府鍔┿傞氳繃鍦ㄨ窇姝ヤ腑鍏嬫湇涓緋誨垪鐨勯殰紕嶏紝浣犲浼氫簡涓撴敞鍜屽喅蹇?鍦ㄧ粡鍘嗛偅浜涗綘鍑犱箮瑕佹斁寮冪殑闀胯窇鎴栧叾浠栭」鐩悗浣犱細鍙戠幇錛氫綘鍦ㄨ窇姝ヨ繃紼嬩腑浜х敓鐨勬剰蹇楀拰浣撻瓌鐨勫寮鴻浣犲湪鍏朵粬鏂歸潰鏈夌潃鍚屾牱鐨勪笓娉ㄥ拰鍐沖績銆?nbsp;</span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">9.澧炲己鍚堜綔綺劇銆?nbsp;</span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">鍙堟槸涓涓潪甯稿煎緱鍘誨仛鐨勫ソ澶勩傝繖鐐瑰ソ澶勬垨璁歌寰堝浜烘劅鍒版儕濂囷紝鍥犱負浜轟滑璁や負璺戞涓嶅彲鑳藉緱鍒拌繖縐嶇泭澶勶紝浠呬粎鐢變簬璺戞鏄崟浜鴻繍鍔ㄣ備絾鏄窇姝ョ‘瀹炴湁鏃舵秹鍙婂埌浜掔浉鍚堜綔銆傛梾琛岃窇姝ワ紝鐗瑰埆鏄湪閭d簺璺喌涓嶅ソ鐨勫湴鏂癸紝闇瑕佹瀬澶х殑鍚堜綔鎰忚瘑銆傝繖浜涜礬闈㈢粡甯鎬細鏈変竴浜?闅滅濡傜煶澶淬佺亴鏈ㄨ璺戞榪涜鐨勫緢鍥伴毦銆?nbsp;</span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">10.闅忔椂闅忓湴錛岀畝鍗曘?nbsp;</span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">涓嶆槸寰堝鐨勮繍鍔ㄥ彲浠ュ湪浠諱綍鍦版柟錛屽嚑涔庝笉闇瑕佽澶囩殑銆傛垜鏁㈣偗瀹氬彜浠e笇鑵婁漢浼氫簤杈╄鐢氳嚦鏄瀷瀛愬拰琛f湇涔熶笉闇瑕併備粖澶╋紝鎴戜滑鍙槸闇瑕佷竴鍙屽ソ鐐圭殑璺戞闉嬬劧鍚庡氨鍙互鍑哄彂浜嗐備粠甯備腑蹇冨埌閮婂尯,鏁翠釜涓栫晫鐨勫湴鏂圭瓑寰呬綘鐨勬帰绱€傜粡甯稿嚭宸悧錛熶綘鐨勬梾琛岀閲岃偗瀹氫細鏈夌┖闂存潵瑁呬綘鐨勮繍鍔ㄩ瀷鐨勩傝繖涓笘鐣屽氨鏄綘鐨勫仴韜埧錛屽幓鍐嶆鍙戠幇瀹冨惂銆?nbsp;</span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">Here are some tips for how to make running a practice: </span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">Be consistent in your running program. Plan your weekly workout schedule and stick to it. This will teach you persistence. </span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">Know which focuses you'll use during every run. This will teach you planning and mindfulness, and improve your mind/body connection. </span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">Constantly practice relaxing your muscles. This will help to relieve tension and train you to relax no matter what activity you're doing. </span><br style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; " /><span style="color: #111111; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; ">At the end of your run, spend a few minutes doing an "end-of-run review." Ask yourself how well you did with keeping your focuses, how your body felt during the run. What did you come away with that will help your next run? Then, the next time you go out for a run, you'll have something to work on that you brought forward from your last run. In this way you'll build a healthy, growing and sustainable running program. </span> <br />杞嚜錛?a >http://www.douban.com/group/topic/20749798/</a><img src ="http://www.shnenglu.com/flyinghare/aggbug/174954.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/flyinghare/" target="_blank">浼氶鐨勫厰瀛?/a> 2012-05-15 11:36 <a href="http://www.shnenglu.com/flyinghare/archive/2012/05/15/174954.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>璋冪敤D3D鐨?CreateDevice 鍑芥暟鍚庡鑷?COleDateTime::GetCurrentTime() 澶辮觸http://www.shnenglu.com/flyinghare/archive/2010/07/21/120944.html浼氶鐨勫厰瀛?/dc:creator>浼氶鐨勫厰瀛?/author>Wed, 21 Jul 2010 03:49:00 GMThttp://www.shnenglu.com/flyinghare/archive/2010/07/21/120944.htmlhttp://www.shnenglu.com/flyinghare/comments/120944.htmlhttp://www.shnenglu.com/flyinghare/archive/2010/07/21/120944.html#Feedback0http://www.shnenglu.com/flyinghare/comments/commentRss/120944.htmlhttp://www.shnenglu.com/flyinghare/services/trackbacks/120944.html褰撴墽琛屼互涓嬩唬鐮佸悗錛屽皢瀵艱嚧 COleDateTime::GetCurrentTime() 澶辮觸
    if (FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT,
        D3DDEVTYPE_HAL,
        hWnd,
        D3DCREATE_SOFTWARE_VERTEXPROCESSING
,
        
&d3dpp,
        
&g_pd3dDevice)))
    {
        
return FALSE;
    }

榪欐槸 CreateDevice 鍑芥暟淇敼浜嗙郴緇熺殑嫻偣榪愮畻綺懼害錛屽彧瑕佸姞涓?D3DCREATE_FPU_PRESERVE 閫夐」鍗沖彲瑙e喅錛屼慨鏀瑰悗鐨勪唬鐮佸涓嬶細
    if (FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT,
        D3DDEVTYPE_HAL,
        hWnd,
        D3DCREATE_SOFTWARE_VERTEXPROCESSING 
| D3DCREATE_FPU_PRESERVE,
        
&d3dpp,
        
&g_pd3dDevice)))
    {
        
return FALSE;
    }

 


鍙傝冭祫鏂欙細
 
          http://topameng.spaces.live.com/Blog/cns!F962D4854A8233D!396.entry?wa=wsignin1.0&sa=56810441
 http://visual-c.itags.org/visual-c-c++/56481/

D3DCREATE_FPU_PRESERVE

  鍦‵PU涓紝鍗村瓨鍦ㄧ潃涓夌榪愮畻綺懼害錛歴ingle precision(24bits)錛宒ouble precision(53bits)(涓鑸簲鐢ㄧ▼搴忓惎鍔ㄦ椂鐨勭簿搴?錛宒ouble extended precision(64bits錛屽緢灝戠敤)銆侳PU鐨勯粯璁ょ簿搴︽槸53bits鐨刣ouble precision銆侱3D鐨凜reateDevice鍑芥暟浼氬皢FPU鐨勮繍綆楃簿搴︽敼鎴?4bits銆傞櫎闈炴寚瀹氫簡D3DCREATE_FPU_PRESERVE鍙傛暟錛屽惁鍒欎笉鑳戒綘鐨勫簲鐢ㄧ▼搴忔誕鐐圭簿搴︿篃浼氶檷浣庛?br style="LINE-HEIGHT: 20px">  鎮插墽鐨勬槸浣犱笉鑳界‘璁x鎴栬呭叾浠栫▼搴忔槸鍚︾粰浣犲垏鎹㈠洖鏉ワ紝鎰熻鏈変簺dx鐗堟湰鏈塨ug錛屽嵆浣胯緗瓺3DCREATE_FPU_PRESERVE涔熶笉浼氬垏鎹㈠洖鏉ャ傝繖鏄垜浠渶瑕佹墜鍔ㄥ垏鎹?br style="LINE-HEIGHT: 20px">    unsigned int uiFloat;
    _controlfp_s(&uiFloat, 0, 0);
    _controlfp_s(0, _PC_53, MCW_PC);  //鍒囨崲鍒癲ouble綺懼害

    .......
    _controlfp_s(0, uiFloat, MCW_PC);  //鍒囨崲鍒板師鏉ョ殑綺懼害



]]>
GDI+ 緇艱堪 http://www.shnenglu.com/flyinghare/archive/2009/11/11/100746.html浼氶鐨勫厰瀛?/dc:creator>浼氶鐨勫厰瀛?/author>Wed, 11 Nov 2009 14:42:00 GMThttp://www.shnenglu.com/flyinghare/archive/2009/11/11/100746.htmlhttp://www.shnenglu.com/flyinghare/comments/100746.htmlhttp://www.shnenglu.com/flyinghare/archive/2009/11/11/100746.html#Feedback0http://www.shnenglu.com/flyinghare/comments/commentRss/100746.htmlhttp://www.shnenglu.com/flyinghare/services/trackbacks/100746.htmlhttp://www.cnblogs.com/xingd/archive/2008/03/02/1088087.html

緋誨垪鍓嶉潰鐨勪袱綃囨枃绔犲啓鐨勫唴瀹瑰お綆鍗曚簡錛屾湰鏂囧鎴戠悊瑙g殑GDI+鍋氫竴涓患榪幫紝涓嶅啀娑夊強浠g爜緇嗚妭銆?br>
GDI+涓叡鏈変笁縐嶅潗鏍囷紝鍏ㄥ眬鍧愭爣銆侀〉闈㈠潗鏍囧拰璁懼鍧愭爣銆傚湪GDI+鐨勭粯鍥捐皟鐢ㄤ腑錛屼紶鍏ョ殑鍧愭爣浣嶄簬鍏ㄥ眬鍧愭爣鍐咃紝鍏ㄥ眬鍧愭爣緇忕敱鍏ㄥ眬鍙樻崲杞崲鍒伴〉闈㈠潗鏍囷紝欏甸潰鍧愭爣鍐嶉氳繃欏甸潰鍙樻崲璁$畻鍑鴻澶囧潗鏍囥?/font>

鍏ㄥ眬鍙樻崲閫氳繃Graphics.Transform鎸囧畾錛屽叾綾誨瀷涓篗atrix銆侴DI+涓殑鐭╅樀涓?x3嫻偣鐭╅樀錛屽彲浠ラ氳繃Matrix綾葷殑鏂規硶鍜屽睘鎬ф潵淇敼鍏ㄥ眬鍙樻崲錛屼篃鍙互閫氳繃Graphics綾諱笂鐨凾ranslateTransform絳夋柟娉曟潵璁懼畾銆傞〉闈㈠彉鎹㈤氳繃Graphics綾葷殑PageUnit鍜孭ageScale鏉ヨ瀹氬潗鏍囧崟浣嶅拰緙╂斁鍊嶆暟銆?/font>

Point, Size, Rectangle鏄疓DI+涓父鐢ㄧ殑搴﹂噺綾誨瀷錛屽茍涓旈兘鍏鋒湁瀵瑰簲鐨刦loat綾誨瀷銆侰olor鍒欎唬琛ㄤ簡32浣岮8R8G8B8鐨勯鑹層傝繖涓浜涢兘鏄熀鏈殑鍊肩被鍨嬶紝鍦ㄥ疄闄呬嬌鐢ㄧ殑鏃跺欙紝瑕佺墷璁板叾鍊肩被鍨嬬殑鐗瑰緛錛岀被浼紀.Size.Width = 100鐨勪唬鐮佹槸娌℃湁浣滅敤鐨勶紝鍥犱負.Width = 100鏄綔鐢ㄥ湪浜唎.Size榪斿洖鐨勪復鏃跺彉閲忎笂浜嗭紝瀵逛簬o鐨勭姸鎬佹病鏈変換浣曞獎鍝嶃?/font>

GraphicsPath錛孯egion, Image鍒欐槸GDI+涓殑涓浜涜祫婧愭х殑綾誨瀷錛屽湪浣跨敤瀹屾垚鍚庤灝藉揩Dispose銆侴raphicsPath鏄竴緋誨垪榪炵畫鐨勭嚎錛屽寘鍚洿綰垮拰鏇茬嚎銆俁egion鍒欒〃紺哄皝闂殑涓涓尯鍩燂紝榪欎釜鍖哄煙鐨勮竟鐣屽彲浠ョ敱GraphicsPath鏉ユ弿榪般侷mage琛ㄧず涓涓浘褰紝鍏朵腑琛ㄧ幇鍍忕礌緇勬垚鐨勪綅鍥劇殑媧劇敓綾諱負Bitmap錛岃〃鐜板け閲忕粯鍥炬寚浠ょ粍鎴愮殑鍥懼艦鐨勬淳鐢熺被涓篗etafile銆傝綆楁満灞忓箷鏈鎿呴暱灞曠幇涓ょ淮鐨勬暟鎹紝鍥犳Rectangle瑙嗕負鏈綆鍗曠殑涓縐峈egion錛屽茍涓斿簲鐢ㄩ潰涔熼潪甯稿箍娉涳紝璁$畻鍖呭惈鏁翠釜Region鐨凴ectangle涔熸槸闈炲父甯歌鐨勪竴縐嶆搷浣溿?/font>

Brush鐢ㄦ潵濉厖涓涓猂egion錛屽~鍏呮椂鍙互浣跨敤鍗曡壊濉厖錛屽彲浠ヤ嬌鐢ㄧ汗鐞嗭紙鍥劇墖錛夊~鍏咃紝涔熷彲浠ヤ嬌鐢ㄧ嚎鍨嬪~鍏呭拰娓愬彉濉厖錛?NET涓皝鍏呯殑GDI+鎻愪緵浜哠olidBrush錛孴extureBrush錛孒atchBrush錛孡inearGradientBrush鍜孭athGradientBrush綾匯侭rush涔熸槸闇瑕佸強鏃禗ispose鐨勶紝瀵逛簬SolidBrush錛屽彲浣跨敤SystemBrushes鍜孊rushes涓殑闈欐佸睘鎬э紝鑾峰彇棰勫畾涔夌殑Brush瀵硅〃錛屽厤鍘籇ispose鐨勯夯鐑︺?/font>

Pen鏄敤鏉ョ敾綰跨殑錛孏DI+鐨勭嚎鏄湁瀹藉害鐨勶紝涔熷氨鏈夊叾鍐呴儴鍖哄煙錛屽洜姝DI+涓殑Pen闇瑕佷竴涓狟rush瀹炰緥鏉ユ瀯閫犮傚悓鏍稴ystemPens鍜孭ens涓彁渚涗簡棰勫畾涔夌殑鍗曡壊Pen瀹炰緥銆?/font>

姝ゅFont瀵硅薄鐢ㄦ潵瀹炵幇GDI+涓笉鍚屽瓧浣撶殑杈撳嚭錛孏raphics綾繪彁渚涗簡涓涓狹easureString鏂規硶璁$畻涓孌靛瓧絎︿覆緇樺埗鍑烘潵鏃跺崰鎹殑鍖哄煙澶у皬銆?/font>

Graphics綾繪彁渚涗簡涓緋誨垪Draw...鏂規硶錛屼嬌鐢ㄧ壒瀹氱殑Pen鏉ョ粯鍒朵竴瀹氱殑褰㈢姸錛孎ill...緋誨垪鍒欎嬌鐢ㄧ壒瀹氱殑Brush鏉ュ~鍏呮寚瀹氬尯鍩熴?/font>

Graphics鐨凜lip灞炴ч氳繃涓涓猂egion綾葷殑瀹炰緥鎸囧畾GDI+鏈夋晥緇樺埗鍖哄煙錛岃繖鏄竴涓熀紜淇℃伅錛孏raphics鐨勫睘鎬lipBounds錛孖sClipEmpty錛孖sVisibleClipEmpty錛孷isibleClipBounds鍧囧熀浜嶤lip灞炴э紝騫朵笖涓哄彧璇葷殑銆?/font>

CompositingQuality錛孖nterpolationMode錛孭ixelOffsetMode錛孲moothingMode錛孴extRenderingHint鐢ㄦ潵鎺у埗緇樺埗杈撳嚭璐ㄩ噺錛岃川閲忚秺楂橈紝閫熷害瓚婃參銆侰ompositingMode鐢ㄦ潵鍚敤Alpha Blend錛孴extContrast鎺у埗鏂囨湰杈撳嚭鏃剁殑Gamma鍊鹼紝RenderingOrigin鐢ㄦ潵鎺у埗8bit/16bit鑹叉繁鏃剁殑鑹插僵鎷屽姩鍜孒atch Brush鐨勮搗濮嬬偣銆?br>
榪欎簺鍐呭瀵逛箣鍚庣殑Minesweeper鍐呭瓚沖浜嗭紝濡傛灉鏈夐棶棰橈紝嬈㈣繋鍦ㄨ瘎璁轟腑鎻愬嚭銆?/font>



]]>
鍥涘ぇ鍥懼儚搴?/title><link>http://www.shnenglu.com/flyinghare/archive/2009/11/05/100178.html</link><dc:creator>浼氶鐨勫厰瀛?/dc:creator><author>浼氶鐨勫厰瀛?/author><pubDate>Thu, 05 Nov 2009 01:26:00 GMT</pubDate><guid>http://www.shnenglu.com/flyinghare/archive/2009/11/05/100178.html</guid><wfw:comment>http://www.shnenglu.com/flyinghare/comments/100178.html</wfw:comment><comments>http://www.shnenglu.com/flyinghare/archive/2009/11/05/100178.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/flyinghare/comments/commentRss/100178.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/flyinghare/services/trackbacks/100178.html</trackback:ping><description><![CDATA[<div>杞嚜錛?a >http://blog.chinaunix.net/u/24948/showart_408317.html</a><br><br>鍥涘ぇ鍥懼儚搴撶殑浣跨敤鎰熷彈:OpenCV/FreeImage/CImg/CxImage <br>瀵筄penCV鐨勫嵃璞★細鍔熻兘鍗佸垎鐨勫己澶э紝鑰屼笖鏀寔鐩墠鍏堣繘鐨勫浘鍍忓鐞嗘妧鏈紝浣撶郴鍗佸垎瀹屽杽錛屾搷浣滄墜鍐屽緢璇︾粏錛屾墜鍐岄鍏堢粰澶у琛ヨ綆楁満瑙嗚鐨勭煡璇嗭紝鍑犱箮娑電洊浜嗚繎10騫村唴鐨勪富嫻佺畻娉曪紱鐒跺悗灝嗗浘鍍忔牸寮忓拰鐭╅樀榪愮畻錛岀劧鍚庡皢鍚勪釜綆楁硶鐨勫疄鐜板嚱鏁般傛垜鐢ㄥ畠鏉ュ仛浜嗕竴涓狧arris瑙掔偣媯嫻嬪櫒鍜孋anny杈圭紭媯嫻嬪櫒錛屾誨叡灝辮姳浜嗕竴涓皬鏃訛紙絎竴嬈$敤OpenCV錛夈傝屼笖璇ュ簱鏄劇ず鍥懼儚鏋佸叾鏂逛究錛屼袱鍙ヨ瘽灝卞彲浠ャ備絾璇ュ簱浼間箮涓嶅ぇ紼沖畾錛屽32F鍜?6S銆?U鐨勫浘鍍忔暟鎹敮鎸佷笂bug閲嶉噸銆傛垜鐢╟vFilter2D鍑芥暟榪涜綰挎ф護娉紝灞″薄鍑洪敊錛屽悗鏉ヤ竴鏌ュ師鏉ユ槸澶ug銆傚悗鏉ョ敤cvmGet鏉ュ彇鐭╅樀鍏冪礌涔熸槸棰戠箒鍑洪敊錛屼粩緇嗘鏌ヤ簡N閬嶇‘淇濈▼搴忔病闂涔嬪悗鍦▂ahoogroup涓婃壘鍒扮瓟妗堬細浠嶇劧鏄痓ug銆傘傘備絾濂芥璇ュ簱鏄紑鏀劇殑錛屾墍浠ヨ嚜宸卞彲浠ヤ慨鏀癸紱鑰屼笖鏀寔CVS銆傚彟澶栬搴撶敤鐨勬槸IPL鐭╅樀搴擄紝閫熷害濂囧揩锝烇綖<br><br>瀵笴xImage鑰冨療鐨勫嵃璞★細璇ュ紑鍙戝寘瀹屽叏寮鏀炬簮浠g爜錛屽浘鍍忓皝瑁呬負涓涓被錛屽姛鑳芥瀬涓哄己澶э紝涓嶹indows銆丮FC鏀寔鏋佸ソ錛屾敮鎸佸浘鍍忕殑澶氱鎿嶄綔錛堢嚎鎬ф護娉€佷腑鍊兼護娉€佺洿鏂瑰浘鎿嶄綔銆佹棆杞緝鏀俱佸尯鍩熼夊彇銆侀槇鍊煎鐞嗐佽啫鑳鑵愯殌銆乤lpha娣峰悎絳夌瓑錛夛紝鏀寔浠庢枃浠躲佸唴瀛樻垨鑰厀in32api瀹氫箟鐨勪綅鍥懼浘鍍忔牸寮忎腑璇誨彇鍥懼儚錛屾敮鎸佸皢鍥懼儚鏄劇ず鍦ㄤ換鎰忕獥鍙o紝鍔熻兘鍙皳寰堝己澶т簡錛岃屼笖瀵瑰儚绱犵殑鎿嶄綔寰堟柟渚匡紝鍙﹀榪樻湁涓涓晫闈㈠緢寮虹殑demo錛屽彲浠ョ洿鎺ュ湪涓婇潰榪涜浜屾寮鍙戯紝鎺ㄨ崘浣跨敤錛?br>緙虹偣錛氶噷闈㈢殑瀛愬簱寰堝錛岀敤璧鋒潵鍙兘杈冮夯鐑︼紱鑰屼笖鎰熻閫熷害紼嶆參錛屼笉濡傚悗闈㈡彁鍒扮殑freeimage<br>浣嗗姛鑳界湡鐨勫崄鍒嗗己澶у晩錛?br><br>CImg錛氬氨涓涓?h鏂囦歡鎵浠ョ敤璧鋒潵寰堢畝鏄庯紝浣嗘劅瑙夊姛鑳戒笂涓嶅CxImage銆傚彲浠ヤ笌CxImage閰嶅悎浣跨敤錛屽洜涓篊Img鎻愪緵浜嗗熀浜巐apack鐨勭煩闃佃繍綆楀嚱鏁板拰瀹屽杽鐨勭嚎鎬ф護娉㈠嵎縐嚱鏁幫紝鍚屾椂CImg鍋氬儚绱犺繍綆楄繕鏄緢鏂逛究鐨勩傚彟澶栵紝鐙湁Display綾誨彲浠ユ柟渚跨殑瀹炵幇鍚勭鏄劇ず錛屽寘鎷樉紺哄浘鍍忋佹墦瀛椼佺敾綰跨瓑絳夈傝繕鏈夛紝璇ュ簱鏈変釜鍩轟簬鍏夋祦鐨勫灝哄害鍥懼儚閰嶅噯渚嬪瓙錛屽緢濂?br><br>FreeImage錛欳璇█鐨勪綋緋伙紝澶ч噺浣跨敤鎸囬拡榪愮畻閫熷害鍙互淇濊瘉錛屽唴鍚厛榪涚殑澶氱鎻掑肩畻娉曘傚彟澶栫嫭鏈夌殑鏀寔meta exif淇℃伅鐨勮鍙栥傝搴撴渶澶х殑鐗圭偣灝辨槸姣旇緝綆緇冿紝鍙妸閲嶇偣鏀懼湪瀵瑰悇縐嶆牸寮忓浘鍍忕殑璇誨彇鍐欏叆鏀寔涓婏紝娌℃湁鏄劇ず閮ㄥ垎錛屽疄闄呯紪紼嬬殑鏃跺欒繕鏄渶瑕佽皟鐢ˋPI鍑芥暟榪涜鏄劇ず<br><br>OpenCV 鍙傝冩墜鍐?/div> <div><a ><u><font color=#800080>http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cv_chinese.htm</font></u></a><br><br><br>娣卞害鍥懼儚鐞嗚В<br><a ><u><font color=#0066cc>http://blog.csdn.net/thirdapple/category/117113.aspx</font></u></a></div> <div><br><br>涓浗鍥懼艦鍥懼儚緗?br><a ><font color=#479299><u>http://www.image2003.com</u></font></a></div> <div><br><br>鍥捐薄綆楁硶澶у叏錛?br><a ><u><font color=#0066cc>http://www.machinevisionshow.cn/search/c07tuxiangsuanfa.htm</font></u></a><br></div> <div><br>涓涓竟緙樿瘑鍒畻娉曚唬鐮?br><a ><u><font color=#0066cc>http://www.moon-soft.com/download/soft/2157.htm</font></u></a></div> <div><br></div> <table style="BORDER-COLLAPSE: collapse" borderColor=#bbf0ff cellSpacing=0 cellPadding=0 width="100%" align=center border=1> <tbody> <tr> <td background=../../templates/newblue/images/bg_line.gif height=28><strong>緗戝弸璇勮</strong></td> </tr> <tr> <td align=middle> <table style="COLOR: #0066cc; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 width="100%" border=0> <tbody> <tr height=25> <td width=120> <strong> 鏈珯緗戝弸</strong> </td> <td style="COLOR: #0066cc" align=right width=360>鏃墮棿錛?008-03-15 23:58:05 IP鍦板潃錛?19.225.53.鈽?/td> </tr> <tr> <td colSpan=3 height=5></td> </tr> <tr> <td colSpan=3> <table style="COLOR: #666666; BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width=480 border=0> <tbody> <tr height=30> <td vAlign=top width=20><strong></strong></td> <td vAlign=top width=480> <pre style="MARGIN: 0px; COLOR: #666666; LINE-HEIGHT: 150%" wrap="break-word">CImg 鏄竴涓敤C++緙栧啓鐨勫紑婧愭暟瀛楀浘鍍忓鐞嗗簱銆?br>  <br> 浣滆呬粙緇?br>  <br> 浣滆匘avid Tschumperlé錛?nbsp;涔嬪墠鏄硶鍥絃a Rochelle澶у鐨勪竴鍚嶆暀鎺堬紝鐜板彈闆囦簬CNRS 鍥懼儚緇勩傛嵁璇翠綔鑰呬粠1998騫村啓鍗氬+璁烘枃鏃跺氨寮濮嬪啓榪欎釜搴撱備綔鑰呬富欏碉細http://www.greyc.ensicaen.fr/~dtschump/ 錛岄噷闈㈡湁鏇村鍏充簬浣滆呮湰浜虹殑娑堟伅銆?br>  <br> 搴撶殑鐗圭偣<br>  <br> 榪欎釜搴撲笌涓鑸殑綾誨簱鏈澶х殑涓嶅悓鐐瑰湪浜庯紝涓嶅儚鍏朵粬鐨勫浘鍍忓鐞嗙被搴擄紝CImg鎵鏈夌殑浠g爜閮藉寘鍚湪涓涓枃浠朵腑錛圕Img.h錛夈傚簱鐨勮璁′嬌鐢ㄤ簡C++妯℃澘鎶鏈紝鏀寔澶氱鏁版嵁綾誨瀷錛屼笖搴撶殑璁捐鏈哄櫒綆鍗曟槑浜嗐傚簱鍖呭惈浜嗚繖鍑犱釜妯″潡錛氶鍏堟槸CImg綾伙紝榪欐槸搴撶殑涓諱綋錛屽熀鏈笂鍩轟簬鍥懼儚鐨勬搷浣滈兘鍦ㄨ繖涓被閲屽疄鐜頒簡銆傜浜屼釜鏄疌ImgDisplay綾伙紝璇ョ被鐢ㄤ簬鏄劇ず澶勭悊鍚庣殑鍥懼儚銆傛垜浠湪鐢╟++澶勭悊鍥懼儚鏃訛紝鎬繪槸瑕佽姳濂藉鍔熷か鍦ㄥ浘鍍忕殑鏄劇ず涓婏紝CImgDisplay鐨勮璁″氨鏄負瑙e喅榪欎釜闂鑰屽啓鐨勩傛湁浜嗗畠錛屾垜浠彲浠ュ儚鐢∕atlab涓鏍鋒柟渚跨殑鏄劇ず鍥懼儚銆傜涓変釜閲嶈鐨勭被鏄疌ImgList璇ョ被涓昏涓哄鐞嗗簭鍒楀浘鍍忋?br>  <br> 璇ュ簱榪樻湁涓涓壒鐐規槸鍙Щ妞嶆э紝鍚屾椂鏀寔Windows鍜宭inux錛孎reeBSD絳夌瓑銆?br>  <br> 璇ュ簱鏀寔澶氱鍥懼儚鏍煎紡鐨勮鍙栦笌淇濆瓨錛屼笉榪囦釜浜鴻涓猴紝闄や簡bmp鏂囦歡澶栵紝璇誨彇鍏朵粬鏂囦歡鏃墮兘鏄厛鐢↖mageMagic鐨刢onvert紼嬪簭杞崲鏍煎紡鍦ㄨ鍙栵紝鎵浠ラ熷害寰堟參銆傝鍙朾mp鏂囦歡寰堝揩銆?br>  <br> 濡備綍浣跨敤<br>  <br> 鍦ㄨ搴撳彂甯冪殑涓嬭澆鏂囦歡涓寘鍚簡寰堝婕旂ず紼嬪簭銆傝浣跨敤瀹冿紝棣栧厛灝嗕笅杞戒笅鏉ョ殑CImg.h鏂囦歡鎷瘋礉鍒頒綘鐨勭紪璇戝櫒鎼滅儲鐨刬nclude鏂囦歡澶逛腑錛岀劧鍚庡湪婧愪唬鐮佸啓涓婏細<br>  <br> #include "CImg.h"<br> using namespace cimg_library;<br>  <br> <br>  <br> 灝辮繖涔堢畝鍗曪紝浣犲氨鍙互浣跨敤鎵鏈夌殑搴撳嚱鏁般?br> 涓嬮潰鏄綔鑰呯粰鐨勪竴涓緥瀛愶細<br> <br> #include "CImg.h"<br>   using namespace cimg_library;<br> <br>   int main() {<br>     CImg<unsigned char> image("lena.jpg"), visu(500,400,1,3,0);<br>     const unsigned char red[] = { 255,0,0 }, green[] = { 0,255,0 }, blue[] = { 0,0,255 };<br>     image.blur(2.5);<br>     CImgDisplay main_disp(image,"Click a point"), draw_disp(visu,"Intensity profile");<br>     while (!main_disp.is_closed && !draw_disp.is_closed) {<br>       main_disp.wait();<br>       if (main_disp.button && main_disp.mouse_y>=0) {<br>         const int y = main_disp.mouse_y;<br>         visu.fill(0).draw_graph(image.get_crop(0,y,0,0,image.dimx()-1,y,0,0),red,1,255,0);<br>         visu.draw_graph(image.get_crop(0,y,0,1,image.dimx()-1,y,0,1),green,1,255,0);<br>         visu.draw_graph(image.get_crop(0,y,0,2,image.dimx()-1,y,0,2),blue,1,255,0).display(draw_disp);<br>         }<br>       }<br>     return 0;<br>   }<br> <br>  <br> <br> 浣犲彲浠ョ洿鎺ュ皢涓婇潰鐨勬簮浠g爜淇濆瓨鍒頒竴涓?cpp鏂囦歡鐒跺悗緙栬瘧鏌ョ湅鏁堟灉銆傚綋鐒訛紝鍦ㄩ」鐩墍鍦ㄦ枃浠跺す涓繀欏誨寘鍚湁鍥劇墖lena.jpg銆?br> <br> 鎶鏈敮鎸?br> <br> 璇ュ簱鏈夐潪甯歌緇嗙殑鏂囨。璇存槑闅忔簮浠g爜涓璧峰彂甯冦俬ttp://cimg.sourceforge.net/index.shtml 榪欐槸sourceforge涓婅欏圭洰鐨勪富欏碉紝鏈夎鍧涳紝鎴戣寰椾綔鑰呴潪甯歌鐪熻礋璐o紝緇忓父鍦ㄤ笂闈負緗戝弸瑙g瓟闂錛岃緇嗙粏鑷淬?br></pre> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <img src ="http://www.shnenglu.com/flyinghare/aggbug/100178.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/flyinghare/" target="_blank">浼氶鐨勫厰瀛?/a> 2009-11-05 09:26 <a href="http://www.shnenglu.com/flyinghare/archive/2009/11/05/100178.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>楂樻柉妯$硦璧勬枡鏀墮泦http://www.shnenglu.com/flyinghare/archive/2009/09/30/97651.html浼氶鐨勫厰瀛?/dc:creator>浼氶鐨勫厰瀛?/author>Wed, 30 Sep 2009 06:11:00 GMThttp://www.shnenglu.com/flyinghare/archive/2009/09/30/97651.htmlhttp://www.shnenglu.com/flyinghare/comments/97651.htmlhttp://www.shnenglu.com/flyinghare/archive/2009/09/30/97651.html#Feedback0http://www.shnenglu.com/flyinghare/comments/commentRss/97651.htmlhttp://www.shnenglu.com/flyinghare/services/trackbacks/97651.htmlhttp://www.cppprog.com/2009/0305/76_8.html

楂樻柉騫蟲粦 楂樻柉妯$硦 楂樻柉婊ゆ嘗鍣細http://blog.csdn.net/hhygcy/archive/2009/07/07/4329056.aspx

瀵筆hotoshop楂樻柉妯$硦婊ら暅鐨勭畻娉曟葷粨 錛?a >http://www.cnblogs.com/hoodlum1980/archive/2008/03/03/1088567.html

]]>
BMP鏂囦歡緇撴瀯鍙婂浘鍍忔瘡琛屽瓧鑺傝綆楁柟娉?/title><link>http://www.shnenglu.com/flyinghare/archive/2009/09/27/97376.html</link><dc:creator>浼氶鐨勫厰瀛?/dc:creator><author>浼氶鐨勫厰瀛?/author><pubDate>Sun, 27 Sep 2009 08:00:00 GMT</pubDate><guid>http://www.shnenglu.com/flyinghare/archive/2009/09/27/97376.html</guid><wfw:comment>http://www.shnenglu.com/flyinghare/comments/97376.html</wfw:comment><comments>http://www.shnenglu.com/flyinghare/archive/2009/09/27/97376.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/flyinghare/comments/commentRss/97376.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/flyinghare/services/trackbacks/97376.html</trackback:ping><description><![CDATA[杞嚜錛?a >http://hi.baidu.com/kennlee/blog/item/52375eca63394743f31fe7d8.html</a><br> <p><font size=3>       1. BMP鏂囦歡緇勬垚 <br><br>銆銆BMP鏂囦歡鐢辨枃浠跺ご銆佷綅鍥句俊鎭ご銆侀鑹蹭俊鎭拰鍥懼艦鏁版嵁鍥涢儴鍒嗙粍鎴愩傛枃浠跺ご涓昏鍖呭惈鏂囦歡鐨勫ぇ灝忋佹枃浠剁被鍨嬨佸浘鍍忔暟鎹亸紱繪枃浠跺ご鐨勯暱搴︾瓑淇℃伅錛涗綅鍥句俊鎭ご鍖呭惈鍥捐薄鐨勫昂瀵鎬俊鎭佸浘鍍忕敤鍑犱釜姣旂壒鏁板兼潵琛ㄧず涓涓儚绱犮佸浘鍍忔槸鍚﹀帇緙┿佸浘鍍忔墍鐢ㄧ殑棰滆壊鏁扮瓑淇℃伅銆傞鑹蹭俊鎭寘鍚浘鍍忔墍鐢ㄥ埌鐨勯鑹茶〃錛屾樉紺哄浘鍍忔椂闇鐢ㄥ埌榪欎釜棰滆壊琛ㄦ潵鐢熸垚璋冭壊鏉匡紝浣嗗鏋滃浘鍍忎負鐪熷僵鑹詫紝鏃㈠浘鍍忕殑姣忎釜鍍忕礌鐢?4涓瘮鐗規潵琛ㄧず錛屾枃浠朵腑灝辨病鏈夎繖涓鍧椾俊鎭紝涔熷氨涓嶉渶瑕佹搷浣滆皟鑹叉澘銆傛枃浠朵腑鐨勬暟鎹潡琛ㄧず鍥懼儚鐨勭浉搴旂殑鍍忕礌鍊鹼紝闇瑕佹敞鎰忕殑鏄細鍥懼儚鐨勫儚绱犲煎湪鏂囦歡涓殑瀛樻斁欏哄簭涓轟粠宸﹀埌鍙籌紝浠庝笅鍒頒笂錛屼篃灝辨槸璇達紝鍦˙MP鏂囦歡涓鍏堝瓨鏀劇殑鏄浘鍍忕殑鏈鍚庝竴琛屽儚绱狅紝鏈鍚庢墠瀛樺偍鍥懼儚鐨勭涓琛屽儚绱狅紝浣嗗涓庡悓涓琛岀殑鍍忕礌錛屽垯鏄寜鐓у厛宸﹁竟鍚庡彸杈圭殑鐨勯『搴忓瓨鍌ㄧ殑錛涘彟澶栦竴涓渶瑕佽鑰呮湅鍙嬪叧娉ㄧ殑緇嗚妭鏄細鏂囦歡瀛樺偍鍥懼儚鐨勬瘡涓琛屽儚绱犲兼椂錛屽鏋滃瓨鍌ㄨ琛屽儚绱犲兼墍鍗犵殑瀛楄妭鏁頒負4鐨勫嶆暟錛屽垯姝e父瀛樺偍錛屽惁鍒欙紝闇瑕佸湪鍚庣琛?錛屽噾瓚?鐨勫嶆暟銆?<br><br>銆銆2. BMP鏂囦歡澶?<br><br>銆銆BMP鏂囦歡澶存暟鎹粨鏋勫惈鏈塀MP鏂囦歡鐨勭被鍨嬨佹枃浠跺ぇ灝忓拰浣嶅浘璧峰浣嶇疆絳変俊鎭傚叾緇撴瀯瀹氫箟濡備笅: <br><br></p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span> <span style="COLOR: #000000">typedef </span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000"> tagBITMAPFILEHEADER<br></span><span style="COLOR: #008080">2</span> <span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">3</span> <span style="COLOR: #000000">WORD bfType; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 浣嶅浘鏂囦歡鐨勭被鍨嬶紝蹇呴』涓?#8220;BM”</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">4</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">DWORD bfSize; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 浣嶅浘鏂囦歡鐨勫ぇ灝忥紝浠ュ瓧鑺備負鍗曚綅</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">5</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">WORD bfReserved1; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 浣嶅浘鏂囦歡淇濈暀瀛楋紝蹇呴』涓?</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">6</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">WORD bfReserved2; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 浣嶅浘鏂囦歡淇濈暀瀛楋紝蹇呴』涓?</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">7</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">DWORD bfOffBits; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 浣嶅浘鏁版嵁鐨勮搗濮嬩綅緗紝浠ョ浉瀵逛簬浣嶅浘鏂囦歡澶寸殑鍋忕Щ閲忚〃紺猴紝浠ュ瓧鑺備負鍗曚綅</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">8</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">} BITMAPFILEHEADER錛涜緇撴瀯鍗犳嵁14涓瓧鑺傘?nbsp;</span></div> <p><br><br>銆銆3. 浣嶅浘淇℃伅澶?<br><br>銆銆BMP浣嶅浘淇℃伅澶存暟鎹敤浜庤鏄庝綅鍥劇殑灝哄絳変俊鎭傚叾緇撴瀯濡備笅錛?br><br></p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span> <span style="COLOR: #000000">typedef </span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000"> tagBITMAPINFOHEADER{<br></span><span style="COLOR: #008080"> 2</span> <span style="COLOR: #000000">DWORD biSize; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 鏈粨鏋勬墍鍗犵敤瀛楄妭鏁?/span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080"> 3</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">LONG biWidth; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 浣嶅浘鐨勫搴︼紝浠ュ儚绱犱負鍗曚綅</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080"> 4</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">LONG biHeight; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 浣嶅浘鐨勯珮搴︼紝浠ュ儚绱犱負鍗曚綅</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080"> 5</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">WORD biPlanes; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 鐩爣璁懼鐨勫鉤闈㈡暟涓嶆竻錛屽繀欏諱負1</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080"> 6</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">WORD biBitCount</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 姣忎釜鍍忕礌鎵闇鐨勪綅鏁幫紝蹇呴』鏄?(鍙岃壊), 4(16鑹?錛?(256鑹?鎴?4(鐪熷僵鑹?涔嬩竴</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080"> 7</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">DWORD biCompression; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 浣嶅浘鍘嬬緝綾誨瀷錛屽繀欏繪槸 0(涓嶅帇緙?,1(BI_RLE8鍘嬬緝綾誨瀷)鎴?(BI_RLE4鍘嬬緝綾誨瀷)涔嬩竴</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080"> 8</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">DWORD biSizeImage; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 浣嶅浘鐨勫ぇ灝忥紝浠ュ瓧鑺備負鍗曚綅</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080"> 9</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">LONG biXPelsPerMeter; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 浣嶅浘姘村鉤鍒嗚鯨鐜囷紝姣忕背鍍忕礌鏁?/span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">10</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">LONG biYPelsPerMeter; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 浣嶅浘鍨傜洿鍒嗚鯨鐜囷紝姣忕背鍍忕礌鏁?/span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">11</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">DWORD biClrUsed;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 浣嶅浘瀹為檯浣跨敤鐨勯鑹茶〃涓殑棰滆壊鏁?/span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">12</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">DWORD biClrImportant;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 浣嶅浘鏄劇ず榪囩▼涓噸瑕佺殑棰滆壊鏁?/span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">13</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">} BITMAPINFOHEADER錛涜緇撴瀯鍗犳嵁40涓瓧鑺傘?nbsp;</span></div> <p><br><br>銆銆娉ㄦ剰錛氬浜嶣MP鏂囦歡鏍煎紡錛屽湪澶勭悊鍗曡壊鍥懼儚鍜岀湡褰╄壊鍥懼儚鐨勬椂鍊欙紝鏃犺鍥捐薄鏁版嵁澶氫箞搴炲ぇ錛岄兘涓嶅鍥捐薄鏁版嵁榪涜浠諱綍鍘嬬緝澶勭悊錛屼竴鑸儏鍐典笅錛屽鏋滀綅鍥鵑噰鐢ㄥ帇緙╂牸寮忥紝閭d箞16鑹插浘鍍忛噰鐢≧LE4鍘嬬緝綆楁硶錛?56鑹插浘鍍忛噰鐢≧LE8鍘嬬緝綆楁硶銆?br><br>銆銆4. 棰滆壊琛?<br><br>銆銆棰滆壊琛ㄧ敤浜庤鏄庝綅鍥句腑鐨勯鑹詫紝瀹冩湁鑻ュ共涓〃欏癸紝姣忎竴涓〃欏規槸涓涓猂GBQUAD綾誨瀷鐨勭粨鏋勶紝瀹氫箟涓縐嶉鑹層俁GBQUAD緇撴瀯鐨勫畾涔夊涓? <br><br></p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span> <span style="COLOR: #000000">typedef </span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000"> tagRGBQUAD {<br></span><span style="COLOR: #008080">2</span> <span style="COLOR: #000000">    BYTErgbBlue;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 钃濊壊鐨勪寒搴?鍊艱寖鍥翠負0-255)</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">3</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">    BYTErgbGreen; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 緇胯壊鐨勪寒搴?鍊艱寖鍥翠負0-255)</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">4</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">    BYTErgbRed; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 綰㈣壊鐨勪寒搴?鍊艱寖鍥翠負0-255)</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">5</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">    BYTErgbReserved;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 淇濈暀錛屽繀欏諱負0</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">6</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">} RGBQUAD; </span></div> <p><br><br>銆銆棰滆壊琛ㄤ腑RGBQUAD緇撴瀯鏁版嵁鐨勪釜鏁扮敱BITMAPINFOHEADER 涓殑biBitCount欏規潵紜畾錛屽綋biBitCount=1,4,8鏃訛紝鍒嗗埆鏈?,16,256涓鑹茶〃欏癸紝褰揵iBitCount=24鏃訛紝鍥懼儚涓虹湡褰╄壊錛屽浘鍍忎腑姣忎釜鍍忕礌鐨勯鑹茬敤涓変釜瀛楄妭琛ㄧず錛屽垎鍒搴擱銆丟銆丅鍊鹼紝鍥懼儚鏂囦歡娌℃湁棰滆壊琛ㄩ」銆備綅鍥句俊鎭ご鍜岄鑹茶〃緇勬垚浣嶅浘淇℃伅錛孊ITMAPINFO緇撴瀯瀹氫箟濡備笅:<br></p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span> <span style="COLOR: #000000"><br></span><span style="COLOR: #008080">2</span> <span style="COLOR: #000000">typedef </span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000"> tagBITMAPINFO {<br></span><span style="COLOR: #008080">3</span> <span style="COLOR: #000000">BITMAPINFOHEADER bmiHeader; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 浣嶅浘淇℃伅澶?/span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">4</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">RGBQUAD bmiColors[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 棰滆壊琛?/span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">5</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">} BITMAPINFO; </span></div> <p><br><br>銆銆娉ㄦ剰錛歊GBQUAD鏁版嵁緇撴瀯涓紝澧炲姞浜嗕竴涓繚鐣欏瓧孌祌gbReserved錛屽畠涓嶄唬琛ㄤ換浣曢鑹詫紝蹇呴』鍙栧浐瀹氱殑鍊間負“0”錛屽悓鏃訛紝RGBQUAD緇撴瀯涓畾涔夌殑棰滆壊鍊間腑錛岀孩鑹層佺豢鑹插拰钃濊壊鐨勬帓鍒楅『搴忎笌涓鑸湡褰╄壊鍥懼儚鏂囦歡鐨勯鑹叉暟鎹帓鍒楅『搴忔伆濂界浉鍙嶏紝鏃細鑻ユ煇涓綅鍥句腑鐨勪竴涓儚绱犵偣鐨勯鑹茬殑鎻忚堪涓?#8220;00錛?0錛宖f錛?0”錛屽垯琛ㄧず璇ョ偣涓虹孩鑹詫紝鑰屼笉鏄摑鑹層?br><br>銆銆5. 浣嶅浘鏁版嵁 <br><br>銆銆浣嶅浘鏁版嵁璁板綍浜嗕綅鍥劇殑姣忎竴涓儚绱犲兼垨璇ュ搴斿儚绱犵殑棰滆壊琛ㄧ殑绱㈠紩鍊鹼紝鍥懼儚璁板綍欏哄簭鏄湪鎵弿琛屽唴鏄粠宸﹀埌鍙?鎵弿琛屼箣闂存槸浠庝笅鍒頒笂銆傝繖縐嶆牸寮忔垜浠張縐頒負Bottom_Up浣嶅浘錛屽綋鐒朵笌涔嬬浉瀵圭殑榪樻湁Up_Down褰㈠紡鐨勪綅鍥撅紝瀹冪殑璁板綍欏哄簭鏄粠涓婂埌涓嬬殑錛屽浜庤繖縐嶅艦寮忕殑浣嶅浘錛屼篃涓嶅瓨鍦ㄥ帇緙╁艦寮忋備綅鍥劇殑涓涓儚绱犲兼墍鍗犵殑瀛楄妭鏁幫細褰揵iBitCount=1鏃訛紝8涓儚绱犲崰1涓瓧鑺傦紱褰揵iBitCount=4鏃訛紝2涓儚绱犲崰1涓瓧鑺傦紱褰揵iBitCount=8鏃訛紝1涓儚绱犲崰1涓瓧鑺傦紱褰揵iBitCount=24鏃?1涓儚绱犲崰3涓瓧鑺傦紝姝ゆ椂鍥懼儚涓虹湡褰╄壊鍥懼儚銆傚綋鍥懼儚涓嶆槸涓虹湡褰╄壊鏃訛紝鍥懼儚鏂囦歡涓寘鍚鑹茶〃錛屼綅鍥劇殑鏁版嵁琛ㄧず瀵瑰簲鍍忕礌鐐瑰湪棰滆壊琛ㄤ腑鐩稿簲鐨勭儲寮曞鹼紝褰撲負鐪熷僵鑹叉椂錛屾瘡涓涓儚绱犵敤涓変釜瀛楄妭琛ㄧず鍥懼儚鐩稿簲鍍忕礌鐐瑰僵鑹插鹼紝姣忎釜瀛楄妭鍒嗗埆瀵瑰簲R銆丟銆丅鍒嗛噺鐨勫鹼紝榪欐椂鍊欏浘鍍忔枃浠朵腑娌℃湁棰滆壊琛ㄣ備笂闈㈡垜宸茬粡璁茶繃浜嗭紝<strong>Windows瑙勫畾鍥懼儚鏂囦歡涓竴涓壂鎻忚鎵鍗犵殑瀛楄妭鏁板繀欏繪槸4鐨勫嶆暟(鍗充互瀛椾負鍗曚綅),涓嶈凍鐨勪互0濉厖</strong>錛屽浘鍍忔枃浠朵腑涓涓壂鎻忚鎵鍗犵殑瀛楄妭鏁拌綆楁柟娉曪細<br><br></font></p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span> <span style="COLOR: #000000">       DataSizePerLine</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (biWidth</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> biBitCount</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">31</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">錛?/span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 涓涓壂鎻忚鎵鍗犵殑瀛楄妭鏁?nbsp;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080"> 2</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080"> 3</span> <span style="COLOR: #000000">鎴栬?br></span><span style="COLOR: #008080"> 4</span> <span style="COLOR: #000000">          DataSizePerLine</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (biWidth</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> biBitCount</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">31</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">32</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">錛?/span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 涓涓壂鎻忚鎵鍗犵殑瀛楄妭鏁?nbsp;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080"> 5</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080"> 6</span> <span style="COLOR: #000000">(濡傛灉biBitCount </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">8</span><span style="COLOR: #000000"> 鎴?4) <br></span><span style="COLOR: #008080"> 7</span> <span style="COLOR: #000000"><br></span><span style="COLOR: #008080"> 8</span> <span style="COLOR: #000000">         DataSizePerLine</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (biWidth</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">錛?/span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 涓涓壂鎻忚鎵鍗犵殑瀛楄妭鏁?nbsp;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080"> 9</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">10</span> <span style="COLOR: #000000">鎴?br></span><span style="COLOR: #008080">11</span> <span style="COLOR: #000000"><br></span><span style="COLOR: #008080">12</span> <span style="COLOR: #000000">       DataSizePerLine</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (biWidth</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">錛?/span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 涓涓壂鎻忚鎵鍗犵殑瀛楄妭鏁?nbsp;<br></span><span style="COLOR: #008080">13</span> <span style="COLOR: #008000"></span></div> <p><br><font size=3>銆銆浣嶅浘鏁版嵁鐨勫ぇ灝忔寜涓嬪紡璁$畻(涓嶅帇緙╂儏鍐典笅)錛?br><br>銆銆DataSize= DataSizePerLine* biHeight銆?<br><br>銆銆涓婅堪鏄疊MP鏂囦歡鏍煎紡鐨勮鏄庯紝鎼炴竻妤氫簡浠ヤ笂鐨勭粨鏋勶紝灝卞彲浠ユ紜殑鎿嶄綔鍥懼儚鏂囦歡錛屽瀹冭繘琛岃鎴栧啓鎿嶄綔浜嗐?br></font></p> <img src ="http://www.shnenglu.com/flyinghare/aggbug/97376.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/flyinghare/" target="_blank">浼氶鐨勫厰瀛?/a> 2009-09-27 16:00 <a href="http://www.shnenglu.com/flyinghare/archive/2009/09/27/97376.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>DirectShow涓父瑙佺殑RGB/YUV鏍煎紡http://www.shnenglu.com/flyinghare/archive/2009/09/27/97374.html浼氶鐨勫厰瀛?/dc:creator>浼氶鐨勫厰瀛?/author>Sun, 27 Sep 2009 07:53:00 GMThttp://www.shnenglu.com/flyinghare/archive/2009/09/27/97374.htmlhttp://www.shnenglu.com/flyinghare/comments/97374.htmlhttp://www.shnenglu.com/flyinghare/archive/2009/09/27/97374.html#Feedback0http://www.shnenglu.com/flyinghare/comments/commentRss/97374.htmlhttp://www.shnenglu.com/flyinghare/services/trackbacks/97374.htmlhttp://www.sharp-i.net/cn/articles/article/The_RGB_YUV_format_in_DirectShow.htm

銆銆璁$畻鏈哄僵鑹叉樉紺哄櫒鏄劇ず鑹插僵鐨勫師鐞嗕笌褰╄壊鐢佃鏈轟竴鏍鳳紝閮芥槸閲囩敤R錛?span>Red錛夈?span>G錛?span>Green錛夈?span>B錛?span>Blue錛夌浉鍔犳販鑹茬殑鍘熺悊錛氶氳繃鍙戝皠鍑轟笁縐嶄笉鍚屽己搴︾殑鐢靛瓙鏉燂紝浣垮睆騫曞唴渚ц鐩栫殑綰€佺豢銆佽摑紓峰厜鏉愭枡鍙戝厜鑰屼駭鐢熻壊褰┿傝繖縐嶈壊褰╃殑琛ㄧず鏂規硶縐頒負RGB鑹插僵絀洪棿琛ㄧず錛堝畠涔熸槸澶氬獟浣撹綆楁満鎶鏈腑鐢ㄥ緱鏈澶氱殑涓縐嶈壊褰╃┖闂磋〃紺烘柟娉曪級銆?/span>
銆銆鏍規嵁涓夊熀鑹插師鐞嗭紝浠繪剰涓縐嶈壊鍏?span>F閮藉彲浠ョ敤涓嶅悓鍒嗛噺鐨?span>R銆?span>G銆?span>B涓夎壊鐩稿姞娣峰悎鑰屾垚銆?/span>
F = r [ R ] + g [ G ] + b [ B ]
銆銆鍏朵腑錛?span>r銆?span>g銆?span>b鍒嗗埆涓轟笁鍩鴻壊鍙備笌娣峰悎鐨勭郴鏁般傚綋涓夊熀鑹插垎閲忛兘涓?span>0錛堟渶寮憋級鏃舵販鍚堜負榛戣壊鍏夛紱鑰屽綋涓夊熀鑹插垎閲忛兘涓?span>k錛堟渶寮猴級鏃舵販鍚堜負鐧借壊鍏夈傝皟鏁?span>r銆?span>g銆?span>b涓変釜緋繪暟鐨勫鹼紝鍙互娣峰悎鍑轟粙浜庨粦鑹插厜鍜岀櫧鑹插厜涔嬮棿鐨勫悇縐嶅悇鏍風殑鑹插厜銆?/span>
閭d箞YUV鍙堜粠浣曡屾潵鍛紵鍦ㄧ幇浠e僵鑹茬數瑙嗙郴緇熶腑錛岄氬父閲囩敤涓夌褰╄壊鎽勫儚鏈烘垨褰╄壊CCD鎽勫儚鏈鴻繘琛屾憚鍍忥紝鐒跺悗鎶婃憚寰楃殑褰╄壊鍥懼儚淇″彿緇忓垎鑹層佸垎鍒斁澶ф牎姝e悗寰楀埌RGB錛屽啀緇忚繃鐭╅樀鍙樻崲鐢佃礬寰楀埌浜害淇″彿Y鍜屼袱涓壊宸俊鍙?span>R錛?span>Y錛堝嵆U錛夈?span>B錛?span>Y錛堝嵆V錛夛紝鏈鍚庡彂閫佺灝嗕寒搴﹀拰鑹插樊涓変釜淇″彿鍒嗗埆榪涜緙栫爜錛岀敤鍚屼竴淇¢亾鍙戦佸嚭鍘匯傝繖縐嶈壊褰╃殑琛ㄧず鏂規硶灝辨槸鎵璋撶殑YUV鑹插僵絀洪棿琛ㄧず銆?/span>
閲囩敤YUV鑹插僵絀洪棿鐨勯噸瑕佹ф槸瀹冪殑浜害淇″彿Y鍜岃壊搴︿俊鍙?span>U銆?span>V鏄垎紱葷殑銆傚鏋滃彧鏈?span>Y淇″彿鍒嗛噺鑰屾病鏈?span>U銆?span>V鍒嗛噺錛岄偅涔堣繖鏍瘋〃紺虹殑鍥懼儚灝辨槸榛戠櫧鐏板害鍥懼儚銆傚僵鑹茬數瑙嗛噰鐢?span>YUV絀洪棿姝f槸涓轟簡鐢ㄤ寒搴︿俊鍙?span>Y瑙e喅褰╄壊鐢佃鏈轟笌榛戠櫧鐢佃鏈虹殑鍏煎闂錛屼嬌榛戠櫧鐢佃鏈轟篃鑳芥帴鏀跺僵鑹茬數瑙嗕俊鍙楓?/span>
銆銆YUV涓?span>RGB鐩鎬簰杞崲鐨勫叕寮忓涓嬶紙RGB鍙栧艱寖鍥村潎涓?span>0-255錛夛細

Y = 0.299R + 0.587G + 0.114B
U = -0.147R - 0.289G + 0.436B
V = 0.615R - 0.515G - 0.100B

R = Y + 1.14V
G = Y - 0.39U - 0.58V
B = Y + 2.03U

銆銆鍦?span>DirectShow涓紝甯歌鐨?span>RGB鏍煎紡鏈?span>RGB1銆?span>RGB4銆?span>RGB8銆?span>RGB565銆?span>RGB555銆?span>RGB24銆?span>RGB32銆?span>ARGB32絳夛紱甯歌鐨?span>YUV鏍煎紡鏈?span>YUY2銆?span>YUYV銆?span>YVYU銆?span>UYVY銆?span>AYUV銆?span>Y41P銆?span>Y411銆?span>Y211銆?span>IF09銆?span>IYUV銆?span>YV12銆?span>YVU9銆?span>YUV411銆?span>YUV420絳夈備綔涓鴻棰戝獟浣撶被鍨嬬殑杈呭姪璇存槑綾誨瀷錛?span>Subtype錛夛紝瀹冧滑瀵瑰簲鐨?span>GUID瑙佽〃2.3銆?/span>

銆銆琛?span>2.3 甯歌鐨?span>RGB鍜?span>YUV鏍煎紡

GUID    鏍煎紡鎻忚堪
MEDIASUBTYPE_RGB1    2鑹詫紝姣忎釜鍍忕礌鐢?span>1浣嶈〃紺猴紝闇瑕佽皟鑹叉澘
MEDIASUBTYPE_RGB4    16鑹詫紝姣忎釜鍍忕礌鐢?span>4浣嶈〃紺猴紝闇瑕佽皟鑹叉澘
MEDIASUBTYPE_RGB8    256鑹詫紝姣忎釜鍍忕礌鐢?span>8浣嶈〃紺猴紝闇瑕佽皟鑹叉澘
MEDIASUBTYPE_RGB565    姣忎釜鍍忕礌鐢?span>16浣嶈〃紺猴紝RGB鍒嗛噺鍒嗗埆浣跨敤5浣嶃?span>6浣嶃?span>5浣?/span>
MEDIASUBTYPE_RGB555    姣忎釜鍍忕礌鐢?span>16浣嶈〃紺猴紝RGB鍒嗛噺閮戒嬌鐢?span>5浣嶏紙鍓╀笅鐨?span>1浣嶄笉鐢級
MEDIASUBTYPE_RGB24    姣忎釜鍍忕礌鐢?span>24浣嶈〃紺猴紝RGB鍒嗛噺鍚勪嬌鐢?span>8浣?/span>
MEDIASUBTYPE_RGB32    姣忎釜鍍忕礌鐢?span>32浣嶈〃紺猴紝RGB鍒嗛噺鍚勪嬌鐢?span>8浣嶏紙鍓╀笅鐨?span>8浣嶄笉鐢級
MEDIASUBTYPE_ARGB32    姣忎釜鍍忕礌鐢?span>32浣嶈〃紺猴紝RGB鍒嗛噺鍚勪嬌鐢?span>8浣嶏紙鍓╀笅鐨?span>8浣嶇敤浜庤〃紺?span>Alpha閫氶亾鍊鹼級
MEDIASUBTYPE_YUY2    YUY2鏍煎紡錛屼互4:2:2鏂瑰紡鎵撳寘
MEDIASUBTYPE_YUYV    YUYV鏍煎紡錛堝疄闄呮牸寮忎笌YUY2鐩稿悓錛?/span>
MEDIASUBTYPE_YVYU    YVYU鏍煎紡錛屼互4:2:2鏂瑰紡鎵撳寘
MEDIASUBTYPE_UYVY    UYVY鏍煎紡錛屼互4:2:2鏂瑰紡鎵撳寘
MEDIASUBTYPE_AYUV    甯?span>Alpha閫氶亾鐨?span>4:4:4 YUV
鏍煎紡
MEDIASUBTYPE_Y41P    Y41P鏍煎紡錛屼互4:1:1鏂瑰紡鎵撳寘
MEDIASUBTYPE_Y411    Y411鏍煎紡錛堝疄闄呮牸寮忎笌Y41P鐩稿悓錛?/span>
MEDIASUBTYPE_Y211    Y211鏍煎紡
MEDIASUBTYPE_IF09    IF09鏍煎紡
MEDIASUBTYPE_IYUV    IYUV鏍煎紡
MEDIASUBTYPE_YV12    YV12鏍煎紡
MEDIASUBTYPE_YVU9    YVU9鏍煎紡

銆銆涓嬮潰鍒嗗埆浠嬬粛鍚勭RGB鏍煎紡銆?/span>

銆銆RGB1銆?span>RGB4銆?span>RGB8
閮芥槸璋冭壊鏉跨被鍨嬬殑RGB鏍煎紡錛屽湪鎻忚堪榪欎簺濯掍綋綾誨瀷鐨勬牸寮忕粏鑺傛椂錛岄氬父浼氬湪BITMAPINFOHEADER鏁版嵁緇撴瀯鍚庨潰璺熺潃涓涓皟鑹叉澘錛堝畾涔変竴緋誨垪棰滆壊錛夈傚畠浠殑鍥懼儚鏁版嵁騫朵笉鏄湡姝g殑棰滆壊鍊鹼紝鑰屾槸褰撳墠鍍忕礌棰滆壊鍊煎湪璋冭壊鏉夸腑鐨勭儲寮曘備互RGB1錛?span>2
鑹蹭綅鍥撅級涓轟緥錛屾瘮濡傚畠鐨勮皟鑹叉澘涓畾涔夌殑涓ょ棰滆壊鍊間緷嬈′負0x000000錛堥粦鑹詫級鍜?span>0xFFFFFF錛堢櫧鑹詫級錛岄偅涔堝浘鍍忔暟鎹?span>001101010111…錛堟瘡涓儚绱犵敤1浣嶈〃紺猴級琛ㄧず瀵瑰簲鍚勫儚绱犵殑棰滆壊涓猴細榛戦粦鐧界櫧榛戠櫧榛戠櫧榛戠櫧鐧界櫧銆?/span>

銆銆RGB565浣跨敤16浣嶈〃紺轟竴涓儚绱狅紝榪?span>16浣嶄腑鐨?span>5浣嶇敤浜?span>R錛?span>6浣嶇敤浜?span>G錛?span>5浣嶇敤浜?span>B銆傜▼搴忎腑閫氬父浣跨敤涓涓瓧錛?span>WORD錛屼竴涓瓧絳変簬涓や釜瀛楄妭錛夋潵鎿嶄綔涓涓儚绱犮傚綋璇誨嚭涓涓儚绱犲悗錛岃繖涓瓧鐨勫悇涓綅鎰忎箟濡備笅錛?/span>
     楂樺瓧鑺?span>              浣庡瓧鑺?/span>
R R R R R G G G     G G G B B B B B
鍙互緇勫悎浣跨敤灞忚斀瀛楀拰縐諱綅鎿嶄綔鏉ュ緱鍒?span>RGB鍚勫垎閲忕殑鍊鹼細

#define RGB565_MASK_RED    0xF800
#define RGB565_MASK_GREEN  0x07E0
#define RGB565_MASK_BLUE   0x001F
R = (wPixel & RGB565_MASK_RED) >> 11;   // 鍙栧艱寖鍥?span>0-31
G = (wPixel & RGB565_MASK_GREEN) >> 5;  //
鍙栧艱寖鍥?span>0-63
B =  wPixel & RGB565_MASK_BLUE;         // 鍙栧艱寖鍥?span>0-31

銆銆RGB555鏄彟涓縐?span>16浣嶇殑RGB鏍煎紡錛?span>RGB鍒嗛噺閮界敤5浣嶈〃紺猴紙鍓╀笅鐨?span>1浣嶄笉鐢級銆備嬌鐢ㄤ竴涓瓧璇誨嚭涓涓儚绱犲悗錛岃繖涓瓧鐨勫悇涓綅鎰忎箟濡備笅錛?/span>
     楂樺瓧鑺?span>             浣庡瓧鑺?/span>
X R R R R G G       G G G B B B B B       錛?span>X琛ㄧず涓嶇敤錛屽彲浠ュ拷鐣ワ級
鍙互緇勫悎浣跨敤灞忚斀瀛楀拰縐諱綅鎿嶄綔鏉ュ緱鍒?span>RGB鍚勫垎閲忕殑鍊鹼細

#define RGB555_MASK_RED    0x7C00
#define RGB555_MASK_GREEN  0x03E0
#define RGB555_MASK_BLUE   0x001F
R = (wPixel & RGB555_MASK_RED) >> 10;   // 鍙栧艱寖鍥?span>0-31
G = (wPixel & RGB555_MASK_GREEN) >> 5;  //
鍙栧艱寖鍥?span>0-31
B =  wPixel & RGB555_MASK_BLUE;         // 鍙栧艱寖鍥?span>0-31

銆銆RGB24浣跨敤24浣嶆潵琛ㄧず涓涓儚绱狅紝RGB鍒嗛噺閮界敤8浣嶈〃紺猴紝鍙栧艱寖鍥翠負0-255銆傛敞鎰忓湪鍐呭瓨涓?span>RGB鍚勫垎閲忕殑鎺掑垪欏哄簭涓猴細BGR BGR BGR…銆傞氬父鍙互浣跨敤RGBTRIPLE鏁版嵁緇撴瀯鏉ユ搷浣滀竴涓儚绱狅紝瀹冪殑瀹氫箟涓猴細

typedef struct tagRGBTRIPLE {
  BYTE rgbtBlue;    // 钃濊壊鍒嗛噺
  BYTE rgbtGreen;   // 緇胯壊鍒嗛噺
  BYTE rgbtRed;     // 綰㈣壊鍒嗛噺
} RGBTRIPLE;

銆銆RGB32浣跨敤32浣嶆潵琛ㄧず涓涓儚绱狅紝RGB鍒嗛噺鍚勭敤鍘?span>8浣嶏紝鍓╀笅鐨?span>8浣嶇敤浣?span>Alpha閫氶亾鎴栬呬笉鐢ㄣ傦紙ARGB32灝辨槸甯?span>Alpha閫氶亾鐨?span>RGB32銆傦級娉ㄦ剰鍦ㄥ唴瀛樹腑RGB鍚勫垎閲忕殑鎺掑垪欏哄簭涓猴細BGRA BGRA BGRA…銆傞氬父鍙互浣跨敤RGBQUAD鏁版嵁緇撴瀯鏉ユ搷浣滀竴涓儚绱狅紝瀹冪殑瀹氫箟涓猴細

typedef struct tagRGBQUAD {
  BYTE    rgbBlue;      // 钃濊壊鍒嗛噺
  BYTE    rgbGreen;     // 緇胯壊鍒嗛噺
  BYTE    rgbRed;       // 綰㈣壊鍒嗛噺
  BYTE    rgbReserved;  // 淇濈暀瀛楄妭錛堢敤浣?span>Alpha閫氶亾鎴栧拷鐣ワ級
} RGBQUAD;

銆銆銆涓嬮潰浠嬬粛鍚勭YUV鏍煎紡銆?span>YUV鏍煎紡閫氬父鏈変袱澶х被錛氭墦鍖咃紙packed錛夋牸寮忓拰騫抽潰錛?span>planar錛夋牸寮忋傚墠鑰呭皢YUV鍒嗛噺瀛樻斁鍦ㄥ悓涓涓暟緇勪腑錛岄氬父鏄嚑涓浉閭葷殑鍍忕礌緇勬垚涓涓畯鍍忕礌錛?span>macro-pixel錛夛紱鑰屽悗鑰呬嬌鐢ㄤ笁涓暟緇勫垎寮瀛樻斁YUV涓変釜鍒嗛噺錛屽氨鍍忔槸涓涓笁緇村鉤闈竴鏍楓傝〃2.3涓殑YUY2鍒?span>Y211閮芥槸鎵撳寘鏍煎紡錛岃?span>IF09鍒?span>YVU9閮芥槸騫抽潰鏍煎紡銆傦紙娉ㄦ剰錛氬湪浠嬬粛鍚勭鍏蜂綋鏍煎紡鏃訛紝YUV鍚勫垎閲忛兘浼氬甫鏈変笅鏍囷紝濡?span>Y0銆?span>U0銆?span>V0琛ㄧず絎竴涓儚绱犵殑YUV鍒嗛噺錛?span>Y1銆?span>U1銆?span>V1琛ㄧず絎簩涓儚绱犵殑YUV鍒嗛噺錛屼互姝ょ被鎺ㄣ傦級

銆銆銆YUY2錛堝拰YUYV錛夋牸寮忎負姣忎釜鍍忕礌淇濈暀Y鍒嗛噺錛岃?span>UV鍒嗛噺鍦ㄦ按騫蟲柟鍚戜笂姣忎袱涓儚绱犻噰鏍蜂竴嬈°備竴涓畯鍍忕礌涓?span>4涓瓧鑺傦紝瀹為檯琛ㄧず2涓儚绱犮傦紙4:2:2鐨勬剰鎬濅負涓涓畯鍍忕礌涓湁4涓?span>Y鍒嗛噺銆?span>2涓?span>U鍒嗛噺鍜?span>2涓?span>V鍒嗛噺銆傦級鍥懼儚鏁版嵁涓?span>YUV鍒嗛噺鎺掑垪欏哄簭濡備笅錛?/span>
Y0 U0 Y1 V0    Y2 U2 Y3 V2 …

銆銆YVYU鏍煎紡璺?span>YUY2綾諱技錛屽彧鏄浘鍍忔暟鎹腑YUV鍒嗛噺鐨勬帓鍒楅『搴忔湁鎵涓嶅悓錛?/span>
Y0 V0 Y1 U0    Y2 V2 Y3 U2 …

銆銆UYVY鏍煎紡璺?span>YUY2綾諱技錛屽彧鏄浘鍍忔暟鎹腑YUV鍒嗛噺鐨勬帓鍒楅『搴忔湁鎵涓嶅悓錛?/span>
U0 Y0 V0 Y1    U2 Y2 V2 Y3 …

銆銆AYUV鏍煎紡甯︽湁涓涓?span>Alpha閫氶亾錛屽茍涓斾負姣忎釜鍍忕礌閮芥彁鍙?span>YUV鍒嗛噺錛屽浘鍍忔暟鎹牸寮忓涓嬶細
A0 Y0 U0 V0    A1 Y1 U1 V1 …

銆銆Y41P錛堝拰Y411錛夋牸寮忎負姣忎釜鍍忕礌淇濈暀Y鍒嗛噺錛岃?span>UV鍒嗛噺鍦ㄦ按騫蟲柟鍚戜笂姣?span>4涓儚绱犻噰鏍蜂竴嬈°備竴涓畯鍍忕礌涓?span>12涓瓧鑺傦紝瀹為檯琛ㄧず8涓儚绱犮傚浘鍍忔暟鎹腑YUV鍒嗛噺鎺掑垪欏哄簭濡備笅錛?/span>
U0 Y0 V0 Y1    U4 Y2 V4 Y3    Y4 Y5 Y6 Y8 …

銆銆Y211鏍煎紡鍦ㄦ按騫蟲柟鍚戜笂Y鍒嗛噺姣?span>2涓儚绱犻噰鏍蜂竴嬈★紝鑰?span>UV鍒嗛噺姣?span>4涓儚绱犻噰鏍蜂竴嬈°備竴涓畯鍍忕礌涓?span>4涓瓧鑺傦紝瀹為檯琛ㄧず4涓儚绱犮傚浘鍍忔暟鎹腑YUV鍒嗛噺鎺掑垪欏哄簭濡備笅錛?/span>
Y0 U0 Y2 V0    Y4 U4 Y6 V4 …

銆銆YVU9鏍煎紡涓烘瘡涓儚绱犻兘鎻愬彇Y鍒嗛噺錛岃屽湪UV鍒嗛噺鐨勬彁鍙栨椂錛岄鍏堝皢鍥懼儚鍒嗘垚鑻ュ共涓?span>4 x 4鐨勫畯鍧楋紝鐒跺悗姣忎釜瀹忓潡鎻愬彇涓涓?span>U鍒嗛噺鍜屼竴涓?span>V鍒嗛噺銆傚浘鍍忔暟鎹瓨鍌ㄦ椂錛岄鍏堟槸鏁村箙鍥懼儚鐨?span>Y鍒嗛噺鏁扮粍錛岀劧鍚庡氨璺熺潃U鍒嗛噺鏁扮粍錛屼互鍙?span>V鍒嗛噺鏁扮粍銆?span>IF09鏍煎紡涓?span>YVU9綾諱技銆?/span>

銆銆IYUV鏍煎紡涓烘瘡涓儚绱犻兘鎻愬彇Y鍒嗛噺錛岃屽湪UV鍒嗛噺鐨勬彁鍙栨椂錛岄鍏堝皢鍥懼儚鍒嗘垚鑻ュ共涓?span>2 x 2鐨勫畯鍧楋紝鐒跺悗姣忎釜瀹忓潡鎻愬彇涓涓?span>U鍒嗛噺鍜屼竴涓?span>V鍒嗛噺銆?span>YV12鏍煎紡涓?span>IYUV綾諱技銆?/span>

銆銆YUV411銆?span>YUV420鏍煎紡澶氳浜?span>DV鏁版嵁涓紝鍓嶈呯敤浜?span>NTSC鍒訛紝鍚庤呯敤浜?span>PAL鍒躲?span>YUV411涓烘瘡涓儚绱犻兘鎻愬彇Y鍒嗛噺錛岃?span>UV鍒嗛噺鍦ㄦ按騫蟲柟鍚戜笂姣?span>4涓儚绱犻噰鏍蜂竴嬈°?span>YUV420騫墮潪V鍒嗛噺閲囨牱涓?span>0錛岃屾槸璺?span>YUV411鐩告瘮錛屽湪姘村鉤鏂瑰悜涓婃彁楂樹竴鍊嶈壊宸噰鏍烽鐜囷紝鍦ㄥ瀭鐩存柟鍚戜笂浠?span>U/V闂撮殧鐨勬柟寮忓噺灝忎竴鍗婅壊宸噰鏍楓?/span>



]]>
緗戠嫄媯嬬墝娓告垙鏈嶅姟绔灦鏋勮璁″師鐞?/title><link>http://www.shnenglu.com/flyinghare/archive/2009/09/20/96772.html</link><dc:creator>浼氶鐨勫厰瀛?/dc:creator><author>浼氶鐨勫厰瀛?/author><pubDate>Sun, 20 Sep 2009 05:52:00 GMT</pubDate><guid>http://www.shnenglu.com/flyinghare/archive/2009/09/20/96772.html</guid><wfw:comment>http://www.shnenglu.com/flyinghare/comments/96772.html</wfw:comment><comments>http://www.shnenglu.com/flyinghare/archive/2009/09/20/96772.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/flyinghare/comments/commentRss/96772.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/flyinghare/services/trackbacks/96772.html</trackback:ping><description><![CDATA[<p>杞嚜錛?a >http://blog.csdn.net/dotnet90/archive/2009/05/05/4152401.aspx</a><br><br>鍩烘湰璁捐姒傚康鍜屽鐞嗘祦紼?/p> <p>璋冪敤妯″瀷</p> <p>鍒╃敤闈㈠悜瀵硅薄鎬濇兂澶氭佹?璋冪敤鏂逛繚瀛樼潃琚皟鐢ㄦ柟鐨勫熀紜鎺ュ彛鎸囬拡(涓鑸О鍛間負 閽╁瓙),璋冪敤鏂圭洿鎺ヨ皟鐢ㄦ帴鍙f寚閽堥噷闈㈡柟娉?鏂規硶鍏蜂綋瀹炵幇閫昏緫鐢?/p> <p>璇ユ帴鍙g殑媧劇敓綾誨疄鐜?紺烘剰鍥?</p> <p> <img border=0 alt="" src="http://www.shnenglu.com/images/cppblog_com/flyinghare/image001.gif" width=504 height=208></p> <p><br>鍩轟簬浜嬩歡椹卞姩鐨勬暟鎹鐞嗘ā鍨?/p> <p>涓虹郴緇熷姛鑳借璁★紝闇瑕佸鐞嗙綉緇滀簨浠舵暟鎹甋ocketEvent錛屾暟鎹簱浜嬩歡鏁版嵁DatabaseEvent錛屽畾鏃跺櫒浜嬩歡鏁版嵁TimerEvent絳夛紝涓烘寤虹珛鏁版嵁闃熷垪鏈?/p> <p>鍔ueueService,涓烘瘡涓闃熷垪寤虹珛澶氫釜瀛愮嚎紼婹ueueServiceThread澶勭悊銆傛暟鎹槦鍒楁湇鍔℃彁渚涙坊鍔犱簨浠舵暟鎹柟娉旳ddToQueue錛岃緗暟鎹槦鍒楁湇鍔¢挬</p> <p>瀛怱etQueueServiceSink錛岃鏁版嵁闃熷垪鏈嶅姟閽╁瓙QueueServiceSink鍋氬叿浣撻昏緫浜嬩歡鏁版嵁澶勭悊銆?br>紺烘剰鍥?</p> <p><img border=0 alt="" src="http://www.shnenglu.com/images/cppblog_com/flyinghare/image002.gif" width=584 height=208><br>鍐嶈咃紝鏍規嵁緗戠粶,鏁版嵁搴撶瓑鐗瑰畾鍔熻兘錛屾瀯寤虹綉緇滐紝鏁版嵁搴撶瓑綆$悊鏈嶅姟錛屽疄鐜版暟鎹槦鍒楁湇鍔¢挬瀛怮ueueServiceSink鏂規硶錛岃皟搴︿簨浠舵暟鎹墽琛屽閮ㄥ</p> <p>鐞嗘帴鍙o紝澶栭儴澶勭悊鎺ュ彛鍏蜂綋鐢變簩嬈″紑鍙戠敤鎴峰疄鐜般傜ず鎰忓浘:</p> <p><img border=0 alt="" src="http://www.shnenglu.com/images/cppblog_com/flyinghare/image003.gif" width=516 height=166></p> <p>浜嬩歡鏁版嵁璁捐</p> <p><img border=0 alt="" src="http://www.shnenglu.com/images/cppblog_com/flyinghare/Event.gif" width=511 height=292></p> <p><br>妗嗘灦浣撶郴璁捐</p> <p><img border=0 alt="" src="http://www.shnenglu.com/images/cppblog_com/flyinghare/image004.gif" width=696 height=476></p> <p>鍔熻兘妯″潡鍒掑垎</p> <p><img border=0 alt="" src="http://www.shnenglu.com/images/cppblog_com/flyinghare/FrameWork.gif" width=537 height=397></p> <p>鏁版嵁闃熷垪鏈嶅姟QueueService妯″潡璁捐</p> <p>    鍩烘湰璁捐姒傚康</p> <p>    寤虹珛涓涓唴瀛橀摼琛紝淇濆瓨浜嬩歡鏁版嵁錛屽澶栭儴鎻愪緵鏂規硶寰閾捐〃娣誨姞浜嬩歡鏁版嵁騫墮氱煡綰跨▼錛屽悓鏃跺惎鍔ㄥ涓鐞嗙嚎紼嬶紝浠庢暟鎹摼琛ㄩ噷鑾峰彇浜嬩歡鏁版嵁錛屾墽琛屽閮ㄩ挬瀛愭柟娉曡繘琛屽鐞?綰跨▼浜嬩歡閫氱煡閲囩敤瀹屾垚绔彛鎶鏈?</p> <p>   綾諱笌鎺ュ彛璁捐</p> <p>     鎺ュ彛璁捐</p> <p> <img border=0 alt="" src="http://www.shnenglu.com/images/cppblog_com/flyinghare/22.jpg" width=541 height=694></p> <p> </p> <p>鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/dotnet90/archive/2009/05/05/4152401.aspx</a></p> <img src ="http://www.shnenglu.com/flyinghare/aggbug/96772.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/flyinghare/" target="_blank">浼氶鐨勫厰瀛?/a> 2009-09-20 13:52 <a href="http://www.shnenglu.com/flyinghare/archive/2009/09/20/96772.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>欏剁偣鍧愭爣鍙樻崲錛?錛?/title><link>http://www.shnenglu.com/flyinghare/archive/2009/09/16/96404.html</link><dc:creator>浼氶鐨勫厰瀛?/dc:creator><author>浼氶鐨勫厰瀛?/author><pubDate>Wed, 16 Sep 2009 04:15:00 GMT</pubDate><guid>http://www.shnenglu.com/flyinghare/archive/2009/09/16/96404.html</guid><wfw:comment>http://www.shnenglu.com/flyinghare/comments/96404.html</wfw:comment><comments>http://www.shnenglu.com/flyinghare/archive/2009/09/16/96404.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/flyinghare/comments/commentRss/96404.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/flyinghare/services/trackbacks/96404.html</trackback:ping><description><![CDATA[<p>杞嚜錛?a href="http://www.shnenglu.com/lovedday/archive/2008/05/02/48628.html">http://www.shnenglu.com/lovedday/archive/2008/05/02/48628.html</a><strong><br><br>涓栫晫鍙樻崲</strong></p> <p>涓栫晫鍙樻崲灝辨槸灝嗙墿浣撻《鐐瑰潗鏍囦粠妯″瀷絀洪棿杞崲鍒頒笘鐣岀┖闂淬傚湪妯″瀷絀洪棿閲岋紝欏剁偣浣嶇疆鍧愭爣渚濇嵁妯″瀷鐨勬湰鍦板潗鏍囩郴鐨勫師鐐硅屽畾錛屽湪涓栫晫絀洪棿閲岋紝鎵鏈夋ā鍨嬬殑欏剁偣鍏辯敤涓涓師鐐癸紝鍗充笘鐣屽潗鏍囩郴鍘熺偣銆備簨瀹炰笂錛屼笘鐣屽彉鎹㈠氨鏄皢涓涓ā鍨嬩粠鏈湴絀洪棿閲嶆柊瀹氫綅鍒頒笘鐣岀┖闂村唴銆備粠妯″瀷絀洪棿鍒頒笘鐣岀┖闂寸殑杞崲瀹為檯涓婂氨鏄妯″瀷榪涜騫崇Щ銆佹棆杞佺緝鏀句互鍙婂畠浠殑浠繪剰緇勫悎鍙樻崲銆?/p> <p>浣跨敤涓夌淮妯″瀷鍒朵綔杞歡錛屼緥濡?dmax錛屽埗浣滀笁緇存ā鍨嬫椂錛岄鍏堥渶瑕佷負妯″瀷璁懼畾涓涓潗鏍囩郴錛屾ā鍨嬩笂鐨勯《鐐瑰潗鏍囧氨鏄瀹氱殑妯″瀷鑷韓鍧愭爣緋諱笅鐨勫潗鏍囷紝榪欎釜鍧愭爣緋諱篃灝辨槸涓婇潰鎻愬埌鐨勬湰鍦板潗鏍囩郴鎴栨ā鍨嬬┖闂淬?/p> <p> </p> <p><strong>1銆佷笘鐣屽彉鎹㈢煩闃?/strong></p> <p>鍦ㄥ鐞嗕笁緇村浘鍍忕殑搴旂敤紼嬪簭涓紝鍙嬌鐢ㄤ笘鐣屽彉鎹㈠畬鎴愪竴涓墿浣擄紙紜垏鐨勮鏄竴涓潗鏍囨垨涓緋誨垪鍧愭爣錛夌殑騫崇Щ銆佹棆杞拰緙╂斁銆傚綋鐒朵篃鍙互瀹屾垚榪欎笁縐嶅彉鎹㈢殑浠繪剰緇勫悎銆傚叿浣撶殑鏂規硶灝辨槸閫氳繃涓嬪紡錛?/p> <p><img height=111 src="http://www.shnenglu.com/images/cppblog_com/changingnow/6923/o_world_matrix.jpg" width=344 border=0></p> <p>灝嗕換鎰忎竴鐐筆(x, y, z)杞崲鍒皃'(x', y', z')錛屼笂寮忎篃鍙互琛ㄧず涓轟互涓嬪艦寮忥細</p> <p>p'(x', y', z') = P(x, y, z) . M<sub>world</sub></p> <p>M<sub>world</sub>灝辨槸涓栫晫鍙樻崲鐭╅樀銆備篃灝辨槸瀹冨疄鐜頒簡鐗╀綋鐨勫鉤縐匯佹棆杞佺緝鏀懼拰瀹冧滑鐨勫鍚堝彉鎹€傚湪瀹氫箟濂戒笘鐣屽彉鎹㈢煩闃靛悗錛岃皟鐢ㄥ嚱鏁癐Direct3DDevice9::SetTransform()騫舵寚瀹氱涓涓弬鏁頒負D3DTS_WORLD錛岀浜屼釜鍙傛暟涓虹浉搴旂殑涓栫晫鍙樻崲鐭╅樀鍗沖彲銆?/p> <p> </p> <p><strong>2銆佸鉤縐?/strong></p> <p>鍙互閫氳繃涓嬪紡錛堜篃灝辨槸涓嬮潰鐨勫鉤縐誨彉鎹㈢煩闃碉級錛?/p> <p><img height=108 src="http://www.shnenglu.com/images/cppblog_com/changingnow/6923/o_translation_matrix.jpg" width=292 border=0></p> <p>灝嗙偣錛坸, y, z錛夋部x銆亂鍜寊杞村垎鍒Щ鍔═<sub>x</sub>銆乀<sub>y</sub>銆乀<sub>z</sub>錛屽埌鍙︿竴鐐癸紙x'錛寉'錛寊'錛夈傚緢鏄劇劧錛屽彧瑕佸緱鍒頒簡榪欎釜騫崇Щ鐭╅樀錛屽鉤縐誨伐浣滃氨鍙互瀹屾垚銆?/p> <p>涓烘柟渚胯搗瑙侊紝D3DX鎵╁睍鍑芥暟搴揹3dx9.lib鎻愪緵浜嗗嚱鏁癉3DXMatrixTranslation()錛岀敤瀹冨彲浠ュ緢鏂逛究鍦扮敓鎴愪竴涓鉤縐諱笘鐣岀煩闃點傝鍑芥暟鐨勫0鏄庡涓?</p> <p><font color=#004040>Builds a matrix using the specified offsets.</font></p> <pre class=syntax><font color=#004040><strong>D3DXMATRIX * D3DXMatrixTranslation(</strong><br> <strong>D3DXMATRIX *</strong> <em>pOut</em><strong>,</strong><br> <strong>FLOAT</strong> <em>x</em><strong>,</strong><br> <strong>FLOAT</strong> <em>y</em><strong>,</strong><br> <strong>FLOAT</strong> <em>z</em><br><strong>)</strong>;</font></pre> <h4><font color=#004040>Parameters</font></h4> <dl> <dt><font color=#004040><em>pOut</em> </font> <dd><font color=#004040>[in, out] Pointer to the D3DXMATRIX structure that is the result of the operation. </font> <dt><font color=#004040><em>x</em> </font> <dd><font color=#004040>[in] X-coordinate offset. </font> <dt><font color=#004040><em>y</em> </font> <dd><font color=#004040>[in] Y-coordinate offset. </font> <dt><font color=#004040><em>z</em> </font> <dd><font color=#004040>[in] Z-coordinate offset. </font></dd></dl> <h4><font color=#004040>Return Values</font></h4> <p><font color=#004040>Pointer to a <strong>D3DXMATRIX</strong> structure that contains a translated transformation matrix.</font></p> <h4><font color=#004040>Remarks</font></h4> <p><font color=#004040>The return value for this function is the same value returned in the pOut parameter. In this way, the D3DXMATRIXTranslation can be used as a parameter for another function.</font></p> <p> </p> <p><strong>3銆佹棆杞?/strong></p> <p>涓庡鉤縐葷被浼鹼紝浣跨敤涓嬮潰鐨勫洓闃剁煩闃靛彲浠ュ皢鐐癸紙x, y, z錛夌粫x杞存棆杞?#952;瑙掞紝鍒版柊鐐癸紙x', y', z'錛?</p> <p><img height=117 src="http://www.shnenglu.com/images/cppblog_com/changingnow/6923/o_rotate_x_matrix.jpg" width=321 border=0></p> <p>緇晊杞存棆杞?#952;瑙掓椂鐨勭煩闃典負錛?/p> <p><img height=113 src="http://www.shnenglu.com/images/cppblog_com/changingnow/6923/o_rotate_y_matrix.jpg" width=303 border=0></p> <p>緇晍杞存棆杞?#952;瑙掓椂鐨勭煩闃典負錛?/p> <p><img height=114 src="http://www.shnenglu.com/images/cppblog_com/changingnow/6923/o_rotate_z_matrix.jpg" width=327 border=0></p> <p>θ鎸囨棆杞搴︼紝鍗曚綅鏄姬搴︼紝鍏蜂綋鏄寚娌跨潃鏃嬭漿杞寸殑鎸囧悜錛堝嵆姝f柟鍚戯級鍚戝潗鏍囧師鐐圭湅鍘婚『鎸囬拡鏃嬭漿榪囩殑瑙掑害銆?/p> <p>鍚屾牱鍙互浣跨敤D3DX鎵╁睍鍑芥暟搴揹3dx9.lib鎻愪緵鐨勫嚱鏁癉3DXMatrixRotationX()銆丏3DXMatrixRotationY()鍜孌3DXMatrixRotationZ()鏂逛究鍦板垱寤烘棆杞煩闃碉紝榪欎笁涓嚱鏁扮殑澹版槑濡備笅錛屽洜澹版槑綾諱技錛屽彧鍒楀嚭D3DXMatrixRotationX()鐨勪嬌鐢ㄨ鏄?</p> <p><font color=#004040>Builds a matrix that rotates around the x-axis.</font></p> <pre class=syntax><font color=#004040><strong>D3DXMATRIX * D3DXMatrixRotationX(</strong><br> <strong>D3DXMATRIX *</strong> <em>pOut</em><strong>,</strong><br> <strong>FLOAT</strong> <em>Angle</em><br><strong>)</strong>;</font></pre> <h4><font color=#004040>Parameters</font></h4> <dl> <dt><font color=#004040><em>pOut</em> </font> <dd><font color=#004040>[in, out] Pointer to the D3DXMATRIX structure that is the result of the operation. </font> <dt><font color=#004040><em>Angle</em> </font> <dd><font color=#004040>[in] Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. </font></dd></dl> <h4><font color=#004040>Return Values</font></h4> <p><font color=#004040>Pointer to a <strong>D3DXMATRIX</strong> structure rotated around the x-axis.</font></p> <h4><font color=#004040>Remarks</font></h4> <p><font color=#004040>The return value for this function is the same value returned in the pOut parameter. In this way, the <strong>D3DXMatrixRotationX</strong> function can be used as a parameter for another function.</font></p> <p> </p> <p><strong>4銆佺緝鏀?/strong></p> <p>浣跨敤涓嬮潰鐨勫洓闃剁煩闃靛彲浠ュ皢鐐癸紙x, y, z錛夊湪x銆亂銆亃杞翠笂鍚勭緝鏀維x銆丼y銆丼z錛屽埌鍙︿竴鐐癸紙x', y', z'錛夈?/p> <p><img height=119 src="http://www.shnenglu.com/images/cppblog_com/changingnow/6923/o_scale_matrix.jpg" width=274 border=0></p> <p>鍚屾牱錛屽彲浠ヤ嬌鐢―irect3D鎵╁睍瀹炵敤搴撲腑鐨勫嚱鏁癉3DXMatrixScaling()鏉ョ敓鎴愮緝鏀劇煩闃碉紝璇ュ嚱鏁扮殑澹版槑濡備笅錛?/p> <p><font color=#004040>Builds a matrix that scales along the x-axis, the y-axis, and the z-axis.</font></p> <pre class=syntax><font color=#004040><strong>D3DXMATRIX * D3DXMatrixScaling(</strong><br> <strong>D3DXMATRIX *</strong> <em>pOut</em><strong>,</strong><br> <strong>FLOAT</strong> <em>sx</em><strong>,</strong><br> <strong>FLOAT</strong> <em>sy</em><strong>,</strong><br> <strong>FLOAT</strong> <em>sz</em><br><strong>)</strong>;</font></pre> <h4><font color=#004040>Parameters</font></h4> <dl> <dt><font color=#004040><em>pOut</em> </font> <dd><font color=#004040>[in, out] Pointer to the D3DXMATRIX structure that is the result of the operation. </font> <dt><font color=#004040><em>sx</em> </font> <dd><font color=#004040>[in] Scaling factor that is applied along the x-axis. </font> <dt><font color=#004040><em>sy</em> </font> <dd><font color=#004040>[in] Scaling factor that is applied along the y-axis. </font> <dt><font color=#004040><em>sz</em> </font> <dd><font color=#004040>[in] Scaling factor that is applied along the z-axis. </font></dd></dl> <h4><font color=#004040>Return Values</font></h4> <p><font color=#004040>Pointer to the scaling transformation <strong>D3DXMATRIX</strong>.</font></p> <h4><font color=#004040>Remarks</font></h4> <p><font color=#004040>The return value for this function is the same value returned in the pOut parameter. In this way, the <strong>D3DXMatrixScaling</strong> function can be used as a parameter for another function.</font></p> <p> </p> <p><strong>5銆佺煩闃佃繛鎺ヤ笌澶嶅悎鍙樻崲</strong></p> <p>鍦ㄥぇ澶氭暟鎯呭喌涓嬶紝Direct3D涓殑鐗╀綋闇瑕佽繘琛岀殑涓栫晫鍙樻崲涓嶆涓涓紝鑰屽線寰鏄涓笘鐣屽彉鎹㈢殑緇勫悎錛岃繖鏃跺彲浠ヤ嬌鐢ㄧ煩闃佃繛鎺ユ潵瀹炵幇榪欑澶嶅悎鍙樻崲銆傚洜涓虹煩闃電殑涓涓紭鐐規槸閫氳繃鐭╅樀鐨勭浉涔橈紝灝嗕袱涓垨鏇村鐭╅樀鐨勪綔鐢ㄥ悎騫跺湪涓璧峰疄鐜般備負浜嗗厛鍚庡疄鐜頒竴涓ā鍨嬬殑鏃嬭漿鍜岀Щ鍔紝涓嶉渶瑕佷嬌鐢ㄤ袱涓煩闃碉紝鍙互灝嗘棆杞煩闃靛拰騫崇Щ鐭╅樀鐩鎬箻寰楀埌涓涓鍚堢煩闃典互瀹炵幇鎵鏈夊姛鑳姐傝繖涓繃紼嬪彨鍋氱煩闃佃繛鎺ワ紙matrix concatention錛夛紝鍙互鐢ㄤ笅闈㈢殑鍏紡琛ㄧず錛?/p> <p>C = M<sub>1</sub> * M<sub>2</sub> * ... * M<sub>n-1</sub> * M<sub>n</sub></p> <p>鍦ㄨ繖涓叕寮忛噷錛孋鏄疄鐜板鍚堝彉鎹㈢殑澶嶅悎鐭╅樀錛屼粠M<sub>1</sub>鍒癕<sub>n</sub>鏄彧鑳藉疄鐜版煇涓縐嶄笘鐣屽彉鎹㈢殑鍗曠嫭鐭╅樀錛坕ndividual matrices錛夈傚ぇ澶氭暟鎯呭喌涓嬫槸涓ゅ埌涓変釜鐭╅樀榪炴帴錛屼絾榪欎釜鏁伴噺娌℃湁闄愬埗銆?/p> <p>浣跨敤鍑芥暟D3DXMatrixMultiply() 鍙畬鎴愮煩闃電殑涔樻硶錛岃鍑芥暟鐨勮鏄庡涓嬶細</p> <p><font color=#004040>Determines the product of two matrices.</font></p> <pre class=syntax><font color=#004040><strong>D3DXMATRIX * D3DXMatrixMultiply(</strong><br> <strong>D3DXMATRIX *</strong> <em>pOut</em><strong>,</strong><br> <strong>CONST D3DXMATRIX *</strong> <em>pM1</em><strong>,</strong><br> <strong>CONST D3DXMATRIX *</strong> <em>pM2</em><br><strong>)</strong>;</font></pre> <h4><font color=#004040>Parameters</font></h4> <dl> <dt><font color=#004040><em>pOut</em> </font> <dd><font color=#004040>[in, out] Pointer to the D3DXMATRIX structure that is the result of the operation. </font> <dt><font color=#004040><em>pM1</em> </font> <dd><font color=#004040>[in] Pointer to a source <strong>D3DXMATRIX</strong> structure. </font> <dt><font color=#004040><em>pM2</em> </font> <dd><font color=#004040>[in] Pointer to a source <strong>D3DXMATRIX</strong> structure. </font></dd></dl> <h4><font color=#004040>Return Values</font></h4> <p><font color=#004040>Pointer to a <strong>D3DXMATRIX</strong> structure that is the product of two matrices.</font></p> <h4><font color=#004040>Remarks</font></h4> <p><font color=#004040>The result represents the transformation M1 followed by the transformation M2 (Out = M1 * M2).</font></p> <p><font color=#004040>The return value for this function is the same value returned in the pOut parameter. In this way, the <strong>D3DXMatrixMultiply</strong> function can be used as a parameter for another function.</font></p> <p>鐭╅樀pOut琛ㄧず鏈緇堢殑澶嶅悎鍙樻崲錛屼篃灝辨槸鍏堣繘琛岀煩闃祊M1琛ㄧず鐨勫彉鎹紝鐒跺悗鍙堣繘琛岀煩闃祊M2琛ㄧず鐨勫彉鎹€?/p> <p><font color=#800000>鍦ㄧ煩闃電殑涔樻硶涓紝欏哄簭鏄緢鍏抽敭鐨勩傛棤璁鴻鍒涘緩浠涔堟牱鐨勪笘鐣屽彉鎹㈢煩闃碉紝璁頒綇浠庡乏鍒板彸鐨勫師鍒欐墠鑳界‘淇濆疄鐜版兂瑕佺殑鏁堟灉錛屼篃灝辨槸璇達紝涓涓鍚堢煩闃電殑瑙嗚鏁堟灉鏄寜浠庡乏鍒板彸鐨勯『搴忓悇鍗曠嫭鐭╅樀瑙嗚鏁堟灉鐨勭粍鍚堛?/font>鍋囪涓涓墿浣撳厛緇晊杞存棆杞紝鐒跺悗鎶婂畠縐誨姩鍒板満鏅唴鐨勫彟涓涓綅緗備負瀹炵幇榪欎釜鏁堟灉錛岄鍏堝垱寤轟竴涓棆杞煩闃礡<sub>y</sub>錛岀劧鍚庝箻浠ヤ竴涓鉤縐葷煩闃礣<sub>w</sub>錛?/p> <p>W = R<sub>y</sub> * T<sub>w</sub></p> <p>鍦ㄨ繖涓叕寮忛噷錛孯<sub>y</sub>琛ㄧず緇晊杞寸殑鏃嬭漿鐭╅樀錛孴<sub>w</sub>瀹炵幇涓栫晫鍧愭爣緋誨唴鐨勪竴嬈″鉤縐匯?font color=#800000>鐭╅樀鐨勪箻娉曚笉婊¤凍浜ゆ崲寰嬨?/font>濡傛灉灝嗚繖涓や釜鐭╅樀浠ョ浉鍙嶇殑欏哄簭鐩鎬箻錛屾晥鏋滄槸鍏堝鉤縐伙紝鐒跺悗鏃嬭漿銆?/p> <img src ="http://www.shnenglu.com/flyinghare/aggbug/96404.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/flyinghare/" target="_blank">浼氶鐨勫厰瀛?/a> 2009-09-16 12:15 <a href="http://www.shnenglu.com/flyinghare/archive/2009/09/16/96404.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>杞細鍥捐薄澶勭悊甯哥敤鐗規晥綆楁硶http://www.shnenglu.com/flyinghare/archive/2009/09/08/95538.html浼氶鐨勫厰瀛?/dc:creator>浼氶鐨勫厰瀛?/author>Tue, 08 Sep 2009 02:14:00 GMThttp://www.shnenglu.com/flyinghare/archive/2009/09/08/95538.htmlhttp://www.shnenglu.com/flyinghare/comments/95538.htmlhttp://www.shnenglu.com/flyinghare/archive/2009/09/08/95538.html#Feedback0http://www.shnenglu.com/flyinghare/comments/commentRss/95538.htmlhttp://www.shnenglu.com/flyinghare/services/trackbacks/95538.html鍘熸枃錛?a >http://blog.csdn.net/alin0725/archive/2007/03/28/1543860.aspx

錛戯紟鍥懼儚鐨勯嗗弽澶勭悊綆楁硶

閫嗗弽澶勭悊鐨勭畻娉曞涓嬶細
璁緍錛実錛宐鍒嗗埆涓烘簮鍥懼儚鍍忕礌f錛坕錛宩錛夌殑綰紝緇匡紝钃濆垎閲忓鹼紝rr錛実g錛宐b鍒嗗埆涓哄鐞嗗悗鍍忕礌g錛坕錛宩錛夌殑綰紝緇匡紝钃濆垎閲忓箋傚垯
rr=255-r
gg=255-g
bb=255-b


錛?鍥懼儚鐨勫鉤婊戝鐞?/p>

綆楁硶濡備笅錛?br>騫蟲粦澶勭悊鏄寚灝嗘簮鍥懼儚鐨勬瘡涓涓儚绱犵殑棰滆壊鍊肩敱鍏剁浉閭籲*n涓儚绱犵殑騫沖潎鍊兼潵浠f浛銆?br>渚嬪錛屽浜?*3鐐歸樀鑰岃█錛岃鍘熷浘鍍忔煇鍍忕礌鐨勫間負f錛坕錛宩錛夛紝騫蟲粦澶勭悊鍚庤鍍忕礌鐨勫間負g錛坕錛宩錛夛紝鍒欙細
g(i,j)=(f(i,j)+f(i-1,j)+f(i+1,j)+f(i-1,j-1)+f(i,j-1)+f(i+1,j-1)+
f(i-1,j+1)+f(i,j+1)+f(i+1,j+1))/9
娉ㄦ剰錛氳綆楁硶涓嶈兘騫蟲粦鍥懼儚杈圭晫鐨勫儚绱犮?/p>

錛? 鍥捐薄鐨勯湏铏瑰鐞?/p>

綆楁硶錛?br>瀵逛簬3*3鐐歸樀錛岄鍏堣綆楀師鍥捐薄鍍忕礌f(i,j)鐨勭孩錛岀豢錛岃摑鍒嗛噺涓庣浉鍚岃f錛坕+1錛宩錛夊強鍚屽垪f(i,j+1)鐩擱偦璞$礌鐨勬搴︼紝鍗沖樊鐨勫鉤鏂逛箣鍜岀殑騫蟲柟鏍癸紝鐒跺悗灝嗘搴﹀間綔涓哄鐞嗗悗鐨勮薄绱爂(i,j)鐨勭孩錛岀豢錛岃摑鍒嗛噺鍊箋?br>璁緍1,g1,b1鍒嗗埆涓哄師鍥捐薄璞$礌f(i,j)鐨勭孩錛岀豢錛岃摑鍒嗛噺鍊鹼紝r2,g2,b2鍒嗗埆涓虹浉鍚岃鐩擱偦璞$礌f(i+1,j)鐨勭孩錛岀豢錛岃摑鍒嗛噺鍊鹼紝r3,g3,b3鍒嗗埆涓哄悓鍒楃浉閭昏薄绱爁(i,j+1)鐨勭孩錛岀豢錛岃摑鍒嗛噺鍊鹼紝rr,gg,bb涓哄鐞嗗悗璞$礌g(i,j)鐨勭孩錛岀豢錛岃摑鍒嗛噺鍊鹼紝鍒欙細
rr1=(r1-r2)^2  rr2=(r1-r3)^2
gg1=(g1-g2)^2  gg2=(g1-g3)^2
bb1=(b1-b2)^2  bb2(b1-b3)^2
rr=2*(rr1+rr2)^0.5
gg=2*(gg1+gg2)^0.5
bb=2*(bb1+bb2)^0.5

錛?鍥捐薄鐨勯攼鍖栧鐞?/p>

閿愬寲澶勭悊鐨勭畻娉曪細
璁$畻鍘熷浘鍍忓儚绱爁(i,j)鐨勫儚绱犲間笌璇ュ儚绱犱笌鐩擱偦鍍忕礌f(i-1,j-1)鍍忕礌鍊間箣宸殑緇濆鍊煎緱鐧懼垎姣斾箣鍜岋紝浣滀負澶勭悊鍚庡浘鍍忓儚绱爂(i,j)鐨勫儚绱犲箋備緥濡傦紝璁緍1,g1,b1鍒嗗埆涓篺(i,j)鐨勭孩銆佺豢銆佽摑鍒嗛噺鍊鹼紝r2,g2,b2鍒嗗埆涓篺(i-1,j-1)鐨勭孩銆佺豢銆佽摑鍒嗛噺鍊鹼紝rr,gg,bb鍒嗗埆涓篻(i,j)鐨勭孩銆佺豢銆佽摑鍒嗛噺鍊鹼紝鍒欙細
rr=r1+0.25*abs(r1-r2)
gg=g1+0.25*abs(g1-g2)
bb=b1+0.25*abs(b1-b2)

錛? 鍥懼儚鐨勬誕闆曞鐞?/p>

綆楁硶錛?br>浣嶅浘鍥懼儚鐨勬誕闆曞鐞嗙殑綆楁硶鏄細
g(i,j)=f(i,j)-f(i-1,j)+甯告暟
寮忎腑錛実(i,j)涓哄鐞嗗悗鍥懼儚鐨勫儚绱犲鹼紝f(i,j)涓哄師鍥懼儚鐨勫儚绱犲鹼紝f(i-1,j)涓哄墠涓涓浉閭誨儚绱犵殑鍊箋傚父鏁頒竴鑸彇128錛屽嵆
rr=r1-r2+128
gg=g1-g2+128
bb=b1-b2+128
寮忎腑錛宺1,g1,b1鍒嗗埆涓哄師鍥懼儚鐨勫儚绱爁(i,j)鐨勭孩銆佺豢銆佽摑鍒嗛噺鍊鹼紱r2,g2,b2鍒嗗埆涓哄墠涓涓浉閭誨儚绱爁(i-1,j)鐨勭孩銆佺豢銆佽摑鍒嗛噺鍊鹼紝rr,gg,bb,鍒嗗埆涓哄鐞嗗悗鍥懼儚鐨勫儚绱爂(i,j)鐨勭孩銆佺豢銆佽摑鍒嗛噺鍊?

錛?鍥懼儚鐨勯暥宓屽鐞?/p>

闀跺祵澶勭悊綆楁硶濡備笅錛?br>闀跺祵澶勭悊鍚庣殑鍥懼儚姣忎竴灝忕煩闃靛唴鐨勬墍鏈夊儚绱犲奸兘鍙栨鐭╅樀鍐呭師鍥懼儚鍚勫儚绱犲間箣鍜岀殑騫沖潎鍊箋備緥濡傦紝瀵逛簬3*3鐨勫瓙鍩燂細
g(i,j)=(f(i,j)+f(i-1,j)+f(i+1,j)+f(i-1,j-1)+f(i+1,j-1)+f(i-1,j+1)+f(i,j+1)+f(i+1,j+1))/9
鍒欏彇錛?br>g(i-1,j)=g(i,j)
g(i+1,j)=g(i,j)
g錛坕,j-1錛?g(i,j)
g(i,j+1)=g(i,j)
g(i,j+1)=g(i,j)
g(i-1,j-1)=g(i,j)
g(i-1,j+1)=g(i,j)
g(i+1,j-1)=g(i,j)
g(i+1,j+1)=g(i,j)

錛?鍥懼儚鐨勭伆搴﹀鐞?/p>

褰╄壊鍥懼儚鐏板害澶勭悊鐨勭畻娉曞涓嬶細
c=tuxing.GetPixel(i,j)
r=c.R
g=c.G
b=c.B
rr=g(r 64)*64
gg=(g 64)*64
bb=(b 64)*64

錛?鍥懼儚緙╁皬澶勭悊

浠ュ潗鏍囧師鐐逛負涓績錛屽皢鍥懼儚涓儚绱犲潗鏍囩殑X鍒嗛噺鍜孻鍒嗛噺鍒嗗埆涔樹互Sx錛孲y錛屽垯鍙嬌鍥懼儚榪涜鏁翠綋鏀懼ぇ鍜岀緝灝忋傝繖鏃訛紝
X'=X*Sx
Y'=Y*Sy
褰揝x=Sy鏃訛紝浣滅浉浼煎彉鎹?
褰揝x!=Sy鏃訛紝浜х敓鍙樺艦銆?/p>

錛?鍥懼儚鐨勫鉤縐誨鐞?/p>

鍥懼儚鐨勫鉤縐誨彉鎹㈡槸灝嗗浘褰笂鐨勭偣錛坸,y)鍦▁鏂瑰悜錛堟按騫蟲柟鍚戯級鍜寉鏂瑰悜錛堝瀭鐩存柟鍚戯級
鍒嗗埆縐誨姩dx鍜宒y,鍒欏彉鎹㈠悗鐐?x',y')鍧愭爣鍊間負錛?br>x'=x+dx
y'=y+dy


錛戯紣.鍥懼儚鐨勬棆杞彉鎹?/p>

浜岀淮鍥懼儚鐨勬棆杞彉鎹㈡槸浠ュ師鐐逛負涓績錛屽皢鐐癸紙x,y錛夋棆杞琣瑙掑害鑰屽緱鍒版柊鐨勫潗鏍囷紙x',y'錛夌殑鍙樻崲縐頒負鏃嬭漿鍙樻崲銆傚叾鏁板琛ㄨ揪寮忎負錛?br>x'=x*cosa-y*sina
y'=x*sina+y*cosa


錛戯紤.浜岀淮鍥懼儚鐨勫縐板彉鎹?/p>

浜岀淮鍥懼儚瀵圭О鍙樻崲鏈変互涓嬪嚑縐嶆儏鍐?
1.浠杞翠負瀵圭О寰楀縐板彉鎹€?br>浠杞翠負瀵圭О寰楃偣(x,y)鐨勫縐扮偣(x',y')鍧愭爣涓猴細
x'=x
y'=-y
2.浠杞翠負瀵圭О寰楀縐板彉鎹€?br>浠杞翠負瀵圭О鐨勭偣錛坸,y錛夌殑瀵圭О鐐?x',y')鍧愭爣涓猴細
x'=-x
y'=y
3.浠ュ師鐐逛負瀵圭О鐨勫縐板彉鎹€?br>浠ュ師鐐逛負瀵圭О寰楃偣錛坸,y錛夌殑瀵圭О鐐癸紙x',y'錛夊潗鏍囦負錛?br>x'=-x
y'=-y
瀵瑰浘鍍忕殑姣忎竴涓儚绱犱緷鎹簩緇村浘褰㈠嚑浣曞彉鎹㈠叕寮忚繘琛岃綆楀悗錛屽湪榪涜鍥懼儚鏄劇ず錛屽垯鍙緱鍒板浘鍍忕殑鍑犱綍鍙樻崲銆?/p>

 

鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/alin0725/archive/2007/03/28/1543860.aspx



]]>
杞細浣跨敤FreeType瀹炵幇鐭㈤噺瀛椾綋鐨勭矖浣撱佹枩浣撱佹弿杈廣侀槾褰辨晥鏋?/title><link>http://www.shnenglu.com/flyinghare/archive/2009/09/07/95461.html</link><dc:creator>浼氶鐨勫厰瀛?/dc:creator><author>浼氶鐨勫厰瀛?/author><pubDate>Mon, 07 Sep 2009 07:24:00 GMT</pubDate><guid>http://www.shnenglu.com/flyinghare/archive/2009/09/07/95461.html</guid><wfw:comment>http://www.shnenglu.com/flyinghare/comments/95461.html</wfw:comment><comments>http://www.shnenglu.com/flyinghare/archive/2009/09/07/95461.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/flyinghare/comments/commentRss/95461.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/flyinghare/services/trackbacks/95461.html</trackback:ping><description><![CDATA[     鎽樿: 鍘熸枃錛歨ttp://www.shnenglu.com/mybios/archive/2009/08/01/91869.html 鍓嶈█錛?Freetype鏄竴涓法騫沖彴銆佸紑婧愮殑瀛椾綋娓叉煋鍣紝緗戜笂寰堝鏂囩珷浠嬬粛錛屾湰浜哄氨涓嶅暟鍡︿簡銆傛湰鏂囬噸鐐瑰湪浜庡疄鐜版枃绔犳爣棰樻墍灞炵殑鍚勭鏁堟灉錛屼笉鏄疐reetype鐨勫熀鏈嬌鐢ㄦ柟娉曚粙緇嶆枃妗o紝鎵浠ュ浜嶧reetype涓嶇啛鎮夌殑鍚屽浠鍏堝涔犱笅Freetype鐨勫熀鏈敤娉曪紝鎵嶅彲浠ヤ嬌鐢ㄦ湰鏂囦腑鎵鎻?..  <a href='http://www.shnenglu.com/flyinghare/archive/2009/09/07/95461.html'>闃呰鍏ㄦ枃</a><img src ="http://www.shnenglu.com/flyinghare/aggbug/95461.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/flyinghare/" target="_blank">浼氶鐨勫厰瀛?/a> 2009-09-07 15:24 <a href="http://www.shnenglu.com/flyinghare/archive/2009/09/07/95461.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>杞細GDI+ 鍦―elphi紼嬪簭鐨勫簲鐢?-- 鏂囧瓧鎻忚竟涓庨槾褰辨墿灞?/title><link>http://www.shnenglu.com/flyinghare/archive/2009/09/07/95445.html</link><dc:creator>浼氶鐨勫厰瀛?/dc:creator><author>浼氶鐨勫厰瀛?/author><pubDate>Mon, 07 Sep 2009 02:53:00 GMT</pubDate><guid>http://www.shnenglu.com/flyinghare/archive/2009/09/07/95445.html</guid><wfw:comment>http://www.shnenglu.com/flyinghare/comments/95445.html</wfw:comment><comments>http://www.shnenglu.com/flyinghare/archive/2009/09/07/95445.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/flyinghare/comments/commentRss/95445.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/flyinghare/services/trackbacks/95445.html</trackback:ping><description><![CDATA[<p>鍘熸枃錛?a >http://blog.csdn.net/maozefa/archive/2008/08/04/2767721.aspx</a><br><br>   [b]鑷粠鏂囩珷[/b]銆奊DI+ 鍦―elphi紼嬪簭鐨勫簲鐢?-- 鍙皟鑺傜殑鏂囧瓧闃村獎鐗規晥銆嬪彂琛ㄥ悗錛屼笉灝戜漢闂垜鎬庢牱瀹炵幇鏂囧瓧鎻忚竟銆傜敱浜庢垜鍙槸涓笟浣欑紪紼嬬埍濂借咃紝鍔犱笂鏂囧寲搴曡暣宸紝鍙娑夊強綆楁硶鍜岀紪紼嬬悊璁烘柟闈㈢殑涓滆タ錛屾垜灝辨棤鑳戒負鍔涗簡錛屾墍浠ョ洿鍒扮洰鍓嶏紝鎴戜篃涓嶇煡閬撳叿浣撶殑鎻忚竟綆楁硶鏄庢牱鐨勶紙緗戜笂鎼滅儲榪嘚嬈★紝涔熸病鎵懼埌絳旀錛屽彲鑳借繖鏂歸潰鐨勪笢瑗挎槸瑕佸崠閽辯殑錛夈?/p> <p>    鍥犻棶寰椾漢澶氫簡錛屾湁鏃舵垜涔熸濈儲鍜岀爺絀朵竴涓嬶紝鎬葷畻鎵句簡涓柟娉曞彲浠ュ疄鐜幫紝铏界劧鍚屼笓涓氱殑鍥懼儚杞歡錛堝PhotoShop錛夋枃瀛楁弿杈規晥鏋滅浉姣斿樊寮轟漢鎰忥紝浣嗗彲浠ュ噾鍚堝噾鍚堬紝浣滀負鐮旂┒蹇冨緱錛屽皢浠g爜璐村湪榪欓噷澶囨煡銆?/p> <p> </p> <p>    鍦ㄣ奊DI+ 鍦―elphi紼嬪簭鐨勫簲鐢?-- 鍙皟鑺傜殑鏂囧瓧闃村獎鐗規晥銆嬩竴鏂囩殑鍐呭鐨勫熀紜涓婏紝瀵規枃瀛楅槾褰辨晥鏋滀唬鐮佽繘琛屼簡鏀硅繘鍜屾墿鍏咃紝鎵╁厖鐨勫姛鑳芥湁2鐐癸細涓鏄敱鍘熸潵鍙兘浜х敓榛戣壊闃村獎鎵╁厖涓轟換鎰忛鑹查槾褰憋紱浜屾槸鍙互瀵歸槾褰辮繘琛屾墿灞曘傛湁浜嗚繖2涓姛鑳斤紝鍒╃敤闃村獎鏁堟灉涔熷氨鍙互榪涜鏂囧瓧鎻忚竟浜嗭紝鎺ㄨ屽箍涔嬶紝涔熷彲瀹炵幇鍥懼儚鐨勬弿杈廣備笅闈㈡槸鍏蜂綋鐨勪唬鐮佸唴瀹癸細</p> <p> </p> <p>// 澶囦喚鍥懼儚銆侱ata: GDI+浣嶅浘鏁版嵁錛?2浣岮RGB鏍煎紡; Dest: 澶囦喚鐩爣; Color: 闃村獎棰滆壊 <br><br>procedure BackImage(Data: TBitmapData; Dest: Pointer; Color: TARGB); <br>asm <br>    push    esi <br>    push    edi </p> <p>    mov     esi, [eax + 16]   // esi = Data.Scan0 <br>    mov     edi, edx          // esi = Dest <br>    mov     edx, ecx          // edx = Color & 0xffffff <br>    and     edx, 0FFFFFFh <br>    mov     ecx, [eax]        // ecx = Data.Height * Data.Width <br>    imul    ecx, [eax + 4] <br>    cld </p> <p>  @Loop:                       // for (; ecx >= 0; ecx --) <br>    or      [esi], edx <br>    movsd                      //   *edi++ = *esi++ & 0xff000000 | edx <br>    loop    @Loop </p> <p>    pop     edi <br>    pop     esi <br>end; </p> <p>// 鎵╁睍銆侱ata: GDI+浣嶅浘鏁版嵁錛?2浣岮RGB鏍煎紡; Source: 澶嶅埗鐨勬簮 <br>// ExpMatrix: 鍗風Н鐭╅樀; MatrixSize錛氱煩闃靛ぇ灝?<br>procedure MakeExpand(Data: TBitmapData; Source, ExpMatrix: Pointer; <br>    MatrixSize: LongWord); <br>var <br>  Radius, mSize, rSize: LongWord; <br>  x, y: LongWord; <br>  Width, Height: Integer; <br>  Matrix: Pointer; <br>  Stride: LongWord; <br>asm <br>    push    esi <br>    push    edi <br>    push    ebx </p> <p>    mov     esi, edx          // esi = Source <br>    mov     edi, [eax + 16]   // edi = Data.Scan0 + 3 (Alpha byte) <br>    add     edi, 3 <br>    add     ecx, 3 <br>    mov     Matrix, ecx       // Matrix = ExpMatrix + 3 (Alpha byte) <br>    mov     ecx, MatrixSize <br>    mov     edx, ecx <br>    dec     ecx <br>    mov     ebx, [eax] <br>    sub     ebx, ecx <br>    mov     Width, ebx        // Width = Data.Width - (MatrixSize - 1) <br>    mov     ebx, [eax + 4] <br>    sub     ebx, ecx <br>    mov     Height, ebx       // Height = Data.Height - (MatrixSize - 1) <br>    shr     ecx, 1 <br>    mov     Radius, ecx       // Radius = MatrixSize / 2 <br>    mov     eax, [eax + 8] <br>    mov     Stride, eax <br>    mov     mSize, eax <br>    shl     edx, 2 <br>    sub     mSize, edx        // mSize = Data.Stride - MatrixSize * 4 <br>    add     eax, 4 <br>    imul    eax, ecx <br>    add     eax, 3 <br>    add     esi, eax          // esi = esi + (Data.Stride * Radius + Radius * 4 + 3) <br>    shl     ecx, 3 <br>    mov     rSize, ecx        // rSize = Radius * 2 * 4 </p> <p>    mov     y, 0              // for (y = 0; y < Height; y ++) <br>  @yLoop:                     // { <br>    mov     x, 0              //   for (x = 0; x < Width; x ++) <br>  @xLoop:                     //   { <br>    test    [esi], 0ffh       //     if (*esi != 0) <br>    jz      @NextPixel        //     { <br>    test    [esi - 4], 0ffh <br>    jz      @001 <br>    test    [esi + 4], 0ffh <br>    jz      @001 <br>    mov     ebx, Stride <br>    test    [esi + ebx], 0ffh <br>    jz      @001 <br>    neg     ebx <br>    test    [esi + ebx], 0ffh <br>    jnz     @NextPixel <br>  @001: <br>    push    edi               //       Save(edi) <br>    mov     ebx, Matrix       //       ebx = Matrix <br>    mov     edx, MatrixSize   //       for (I = 0; I < MatrixSize; I ++) <br>  @Loop3:                     //       { <br>    mov     ecx, MatrixSize   //         for (J = 0; J <= MatrixSize; J ++) <br>  @Loop4:                     //         { <br>    mov      al, [ebx]        //           *edi = max(*ebx, *edi) <br>    cmp     al, [edi] <br>    jb      @002 <br>    mov     [edi], al <br>  @002: <br>    add     edi, 4            //           edi += 4 <br>    add     ebx, 4            //           ebx += 4 <br>    loop    @Loop4            //         } <br>    add     edi, mSize        //         edi += mSize <br>    dec     edx <br>    jnz     @Loop3            //       } <br>    pop     edi               //       Reset(edi) <br>  @NextPixel:                 //     } <br>    add     edi, 4            //     edi += 4 <br>    add     esi, 4            //     esi += 4 <br>    inc     x <br>    mov     eax, x <br>    cmp     eax, Width <br>    jl      @xLoop            //   } <br>    add     esi, rSize <br>    add     edi, rSize <br>    inc     y <br>    mov     eax, y <br>    cmp     eax, Height <br>    jl      @yLoop            // } </p> <p>    pop     ebx <br>    pop     edi <br>    pop     esi <br>end; </p> <p>procedure GdipShadow(Data: TBitmapData; Buf: Pointer; Radius: LongWord); <br>var <br>  Gauss: array of Integer; <br>  Q: Double; <br>  x, y, n, z: Integer; <br>  p: PInteger; <br>begin <br>  // 鏍規嵁鍗婂緞璁$畻楂樻柉妯$硦鐭╅樀 <br>  Q := Radius / 2; <br>  if Q = 0 then Q := 0.1; <br>  n := Radius shl 1 + 1; <br>  SetLength(Gauss, n * n); <br>  p := @Gauss[0]; <br>  z := 0; <br>  for x := -Radius to Radius do <br>    for y := -Radius to Radius do <br>    begin <br>      p^ := Round(Exp(-(x * x + y * y) / (2.0 * Q * Q)) / (2.0 * PI * Q * Q) * 1000.0); <br>      Inc(z, p^); <br>      Inc(p); <br>    end; <br>  MakeShadow(Data, Buf, Gauss, n, z); <br>end; </p> <p>procedure GdipBorder(Data: TBitmapData; Buf: Pointer; Expand: LongWord; Color: TARGB); <br>var <br>  bmp: TGpBitmap; <br>  bg: TGpGraphics; <br>  Data1: TBitmapData; <br>  Size: Integer; <br>begin <br>  Size := Expand shl 1 + 1; <br>  bmp := TGpBitmap.Create(Size, Size, pf32bppARGB); <br>  bg := TGpGraphics.Create(bmp); <br>  try <br>    // 鍒墮犱竴涓洿寰?Size錛屾秷闄ら敮榻垮悗鐨勫渾浣滀負鎻忚竟錛堟垨鎵╁睍錛夌殑浣嶅浘鐢葷瑪 <br>    bg.SmoothingMode := smAntiAlias; <br>    bg.PixelOffsetMode := pmHalf; <br>    bg.FillEllipse(Brushs[Color], 0, 0, Size, Size); <br>    Data1 := bmp.LockBits(GpRect(0, 0, Size, Size), [imRead], pf32bppARGB); <br>    try <br>      // 鐢ㄤ綅鍥劇敾絎旀墿灞曞浘鍍?<br>      MakeExpand(Data, Buf, Data1.Scan0, Size); <br>    finally <br>      bmp.UnlockBits(Data1); <br>    end; <br>  finally <br>    bg.Free; <br>    bmp.Free; <br>  end; <br>end; </p> <p>procedure DrawShadow(const g: TGpGraphics; const Bitmap: TGpBitmap; <br>    const layoutRect: TGpRectF; ShadowSize, Distance: LongWord; <br>    Angle: Single; Color: TARGB; Expand: LongWord); <br>var <br>  dr, sr: TGpRectF; <br>  Data: TBitmapData; <br>  Buf: Pointer; <br>  SaveScan0: Pointer; <br>begin <br>  Data := Bitmap.LockBits(GpRect(0, 0, Bitmap.Width, Bitmap.Height), <br>                          [imRead, imWrite], pf32bppARGB); <br>  GetMem(Buf, Data.Height * Data.Stride); <br>  try <br>    BackImage(Data, Buf, Color); <br>    if Expand > ShadowSize then <br>      Expand := ShadowSize; <br>    if Expand <> 0 then            // 澶勭悊鏂囧瓧闃村獎鎵╁睍 <br>      if Expand <> ShadowSize then <br>      begin <br>        SaveScan0 := Data.Scan0; <br>        Data.Scan0 := Buf; <br>        GdipBorder(Data, SaveScan0, Expand, Color); <br>        Data.Scan0 := SaveScan0; <br>      end else <br>        GdipBorder(Data, Buf, Expand, Color); <br>    if Expand <> ShadowSize then   // 澶勭悊鏂囧瓧闃村獎鏁堟灉 <br>      GdipShadow(Data, Buf, ShadowSize - Expand); <br>  finally <br>    FreeMem(Buf); <br>    Bitmap.UnlockBits(Data); <br>  end; <br>  sr := GpRect(0.0, 0.0, Data.Width, Data.Height); <br>//  sr := GpRect(0.0, 0.0, layoutRect.Width + ShadowSize * 2 + 2, <br>//               layoutRect.Height + ShadowSize * 2 + 2); <br>  dr := GpRect(layoutRect.Point, sr.Size); <br>  // 鏍規嵁瑙掑害璁$畻闃村獎浣嶅浘鍦ㄧ洰鏍囩敾甯冪殑鍋忕Щ閲?<br>  Offset(dr, Cos(PI * Angle / 180) * Distance - ShadowSize - 1, <br>         Sin(PI * Angle / 180) * Distance - ShadowSize - 1); <br>  // 杈撳嚭闃村獎浣嶅浘鍒扮洰鏍囩敾甯?<br>  g.DrawImage(Bitmap, dr, sr.X, sr.Y, sr.Width, sr.Height, utPixel); <br>end; </p> <p>// 璁$畻騫惰緭鍑烘枃瀛楅槾褰辨晥鏋?<br>// g: 鏂囧瓧杈撳嚭鐨勭敾甯? str瑕佽緭鍑虹殑鏂囧瓧; font: 瀛椾綋; layoutRect: 闄愬畾鐨勬枃瀛楄緭鍑鴻寖鍥?<br>// ShadowSize: 闃村獎澶у皬; Distance: 闃村獎璺濈; <br>// Angle: 闃村獎杈撳嚭瑙掑害(宸﹁竟騫寵澶勪負0搴︺傞『鏃墮拡鏂瑰悜) <br>// ShadowAlpha: 闃村獎鏂囧瓧鐨勪笉閫忔槑搴? format: 鏂囧瓧杈撳嚭鏍煎紡 <br>procedure DrawShadowString(const g: TGpGraphics; const str: WideString; <br>    const font: TGpFont; const layoutRect: TGpRectF; <br>    ShadowSize, Distance: LongWord; Angle: Single = 60; <br>    Color: TARGB = $C0000000; Expand: LongWord = 0; <br>    const format: TGpStringFormat = nil); overload; <br>var <br>  Bmp: TGpBitmap; <br>  Bg: TGpGraphics; <br>begin <br>  // 寤虹珛閫忔槑鐨?2浣岮RGB闃村獎浣嶅浘錛屽ぇ灝忎負layoutRect闀褲佸搴?+ ShadowSize * 2 + 2 <br>  Bmp := TGpBitmap.Create(Round(layoutRect.Width + 0.5) + ShadowSize shl 1 + 2, <br>                          Round(layoutRect.Height + 0.5) + ShadowSize shl 1 + 2, <br>                          pf32bppARGB); <br>  Bg := TGpGraphics.Create(Bmp); <br>  try <br>    Bg.TextRenderingHint := thAntiAlias; <br>    // 浠olor涓嶉忔槑搴︾殑榛戣壊鐢誨埛錛屽湪ShadowSize + 1澶勮緭鍑烘枃瀛楀埌浣嶅浘鐢誨竷銆?<br>    // 鏂逛究榛戣壊浠ュ鐨勯槾褰遍鑹叉浛鎹紙鐩存帴鐢–olor鐢伙紝妯$硦澶勭悊鍚庡緢闅劇湅錛?<br>    Bg.DrawString(str, font, Brushs[Color and $FF000000], <br>                  GpRect(ShadowSize + 1, ShadowSize + 1, <br>                  layoutRect.Width, layoutRect.Height), format); <br>    DrawShadow(g, Bmp, layoutRect, ShadowSize, Distance, Angle, Color, Expand); <br>  finally <br>    Bg.Free; <br>    Bmp.Free; <br>  end; <br>end; </p> <p>// 璁$畻騫惰緭鍑烘枃瀛楅槾褰辨晥鏋滐紝闄や互杈撳嚭鐐筼rigin鏇夸唬涓婇潰甯冨眬鐭╁艦澶栵紝鍏朵粬鍙傛暟鍚屼笂 <br>procedure DrawShadowString(const g: TGpGraphics; const str: WideString; <br>    const font: TGpFont; const origin: TGpPointF; <br>    ShadowSize, Distance: LongWord; Angle: Single = 60; <br>    Color: TARGB = $C0000000; Expand: LongWord = 0; <br>    const format: TGpStringFormat = nil); overload; <br>begin <br>  DrawShadowString(g, str, font, g.MeasureString(str, font, origin, format), <br>                   ShadowSize, Distance, Angle, Color, Expand, format); <br>end;<br>    涓婇潰浠g爜涓璏akeShadow榪囩▼鐨勪唬鐮佸湪銆奊DI+ 鍦―elphi紼嬪簭鐨勫簲鐢?-- 鍙皟鑺傜殑鏂囧瓧闃村獎鐗規晥銆嬩竴鏂囦腑錛屾湰鏂囨病鏈夎創鍑恒傜敱浜庝唬鐮佷腑宸茬粡鏈変簡杈冭緇嗙殑娉ㄩ噴錛屾晠涓嶅啀瑙i噴銆備笅闈㈣創鍑烘祴璇曚唬鐮侊細</p> <p><br>procedure TextPaint(g: TGpGraphics); <br>var <br>  brush: TGpLinearGradientBrush; <br>  font: TGpFont; <br>  fontFamily: TGpFontFamily; <br>  r: TGpRect; <br>begin <br>  fontFamily := TGpFontFamily.Create({'Times New Roman'}'鍗庢枃琛屾シ'); <br>  font := TGpFont.Create(fontFamily, 55, [fsBold], utPixel); <br>  r := GpRect(Form1.PaintBox1.ClientRect); <br>  brush := TGpLinearGradientBrush.Create(r, kcBlue, kcAliceBlue, 90); <br>  g.FillRectangle(Brush, r); </p> <p>  DrawShadowString(g, '鏂囧瓧闃村獎鐗規晥', font, GpPoint(10, r.Height / 3), 5, 10, 60, $C0000000, 1); <br>  DrawShadowString(g, '鏂囧瓧闃村獎鐗規晥', font, GpPoint(10, r.Height / 3), 1, 0, 60, $FFFF0000, 1); </p> <p>//  DrawShadowString(g, '鏂囧瓧闃村獎鐗規晥', font, GpPoint(10, r.Height / 3), 5, 12, 60, $C0000000, 1); <br>//  DrawShadowString(g, '鏂囧瓧闃村獎鐗規晥', font, GpPoint(10, r.Height / 3), 2, 3, 60, $FFc00000, 1); <br>  g.TextRenderingHint := thAntiAlias; <br>  g.DrawString('鏂囧瓧闃村獎鐗規晥', font, Brushs.White, 10, r.Height / 3); <br>  font.Free; <br>  fontFamily.Free; <br>  Brush.Free; <br>end;<br>    浠ヤ笅鏄祴璇曚唬鐮佹晥鏋滃浘錛屽浘涓鍜屽浘浜岄兘鏄枃瀛楁弿杈癸紙1涓儚绱犵殑杈規錛夊姞闃村獎鏁堟灉錛屽叾涓浘涓娌¤繘琛岄槾褰辨墿灞曪紝鍗充笂闈㈢殑15琛岀殑浠g爜鏈鍚庝竴涓弬鏁頒負0錛屽浘浜屾槸鍔犱簡1涓儚绱犵殑闃村獎鎵╁睍鏁堟灉錛堜笂榪頒唬鐮佺殑“姝e畻”杈撳嚭錛夛細</p> <p> 鍥句竴</p> <p> <img height=97 alt="" src="http://www.shnenglu.com/images/cppblog_com/flyinghare/52-1.jpg" width=390 border=0></p> <p>鍥句簩</p> <p> <img height=97 alt="" src="http://www.shnenglu.com/images/cppblog_com/flyinghare/52-2.jpg" width=390 border=0></p> <p>    鍒╃敤鏀硅繘鐨勯槾褰辨晥鏋滐紝涓嶄粎鍙疄鐜版枃瀛楁弿杈癸紝涔熷彲鏄劇ず綾諱技绔嬩綋鏂囧瓧鐨勬晥鏋滐紙鏀瑰彉鏄劇ず璺濈錛夛紝涓婇潰嫻嬭瘯浠g爜涓紝琚敞閲婄殑2鍙ヤ唬鐮佽緭鍑烘晥鏋滃涓嬶細</p> <p> </p> <p>鍥句笁<br></p> <p><img height=97 alt="" src="http://www.shnenglu.com/images/cppblog_com/flyinghare/52-3.jpg" width=390 border=0><br>    鑷充簬鍥懼儚鐨勬弿杈癸紝浼間箮娌℃湁鏂囧瓧鐨勬弿杈規晥鏋滃ソ錛岀┒鍏跺師鍥狅紝涓昏鏄浘鍍忕殑杞粨鐪嬭搗鏉ュソ鍍忔槸鍦嗘鼎騫蟲粦鐨勶紝鍏跺疄鏈夊緢澶氬崐褰遍敮榻匡紝鍦≒hotoshop涓紝閫氳繃鍏堥夊尯鍚庢弿杈癸紝鍙兘瀵歸夊尯杈圭紭浣滀簡澶勭悊錛屾墍浠ユ晥鏋滅浉褰撳ソ錛堜笓涓氱殑杞歡錛岃偗瀹氭湁寰堝ソ鐨勭畻娉曪級銆備笅闈㈡槸鎴戝涓寮犲皬鍥劇墖浣滅殑鎻忚竟澶勭悊浠g爜鍜岃緭鍑烘晥鏋滃浘錛?/p> <p>// 鍥懼儚鎻忚竟 <br>// g: 鏂囧瓧杈撳嚭鐨勭敾甯? Image: 鍥懼儚; x, y: 鍥懼儚杈撳嚭鍘熺偣 <br>// BorderWidth: 鎬葷殑杈規瀹藉害; Color: 杈規棰滆壊; <br>// Expand: 杈規鎵╂暎澶у皬; Attributes: 鍥懼儚鏄劇ず灞炴?<br>procedure DrawImageBorder(const g: TGpGraphics; const Image: TGpImage; <br>    x, y: Single; BorderWidth: LongWord; Color: TARGB = kcWhite; <br>    Expand: LongWord = 0; const Attributes: TGpImageAttributes = nil); <br>var <br>  Bmp: TGpBitmap; <br>  Bg: TGpGraphics; <br>  ColorMatrix: TColorMatrix; <br>  Attr: TGpImageAttributes; <br>  layoutRect: TGpRectF; <br>begin <br>  Bmp := TGpBitmap.Create(Image.Width + BorderWidth shl 1 + 2, <br>                          Image.Height + BorderWidth shl 1 + 2, <br>                          pf32bppARGB); <br>  Bg := TGpGraphics.Create(Bmp); <br>  Attr := Attributes; <br>  if Attr = nil then <br>    Attr := TGpImageAttributes.Create; <br>  try <br>    FillChar(ColorMatrix, Sizeof(TColorMatrix), 0); <br>    ColorMatrix[3, 3] := 1; <br>    ColorMatrix[4, 4] := 1; <br>    // 鍒╃敤棰滆壊鐭╅樀灝嗗浘鍍忚緭鍑轟負榛戣壊錛屼互渚胯竟妗嗛鑹叉浛鎹?<br>    Attr.SetColorMatrix(ColorMatrix); <br>    layoutRect := GpRect(x, y, Image.Width, Image.Height); <br>    Bg.DrawImage(Image, <br>                 GpRect(BorderWidth + 1, BorderWidth + 1, layoutRect.Width, layoutRect.Height), <br>                 0, 0, layoutRect.Width, layoutRect.Height, utPixel, Attr); <br>    DrawShadow(g, Bmp, layoutRect, BorderWidth, 0, 0, Color, BorderWidth - Expand); <br>  finally <br>    if Attributes <> nil then <br>      Attr.ClearColorMatrix <br>    else <br>      Attr.Free; <br>    Bg.Free; <br>    Bmp.Free; <br>  end; <br>end; </p> <p>procedure ImagePaint(g: TGpGraphics); <br>var <br>  brush: TGpLinearGradientBrush; <br>  r: TGpRect; <br>  Image: TGpImage; <br>  Attributes: TGpImageAttributes; <br>begin <br>  r := GpRect(Form1.PaintBox1.ClientRect); <br>  brush := TGpLinearGradientBrush.Create(r, kcBlue, kcAliceBlue, 90); <br>  g.FillRectangle(Brush, r); <br>  Image := TGpImage.Create('..\..\Media\Watermark.bmp'); <br>  // 鐢誨師鍥?<br>  g.TranslateTransform(20, r.Height / 3); <br>  g.DrawImage(Image, 0, 0, Image.Width, Image.Height); <br>  // 璁劇疆鍥懼儚閫忔槑鑹?<br>  Attributes := TGpImageAttributes.Create; <br>  Attributes.SetColorKey($ff00ff00, $ff00ff00); <br>  // 鐢?涓儚绱犵殑鎻忚竟鍥?<br>  g.TranslateTransform(Image.Width + 20, 0); <br>  DrawImageBorder(g, Image, 0, 0, 2, kcWhite, 0, Attributes); <br>  g.DrawImage(Image, GpRect(0.0, 0, Image.Width, Image.Height), <br>              0.0, 0.0, Image.Width, Image.Height, utPixel, Attributes); <br>  // 鐢?涓儚绱犵殑鎻忚竟鍥撅紝鍏朵腑鎵╂暎3鍍忕礌 <br>  g.TranslateTransform(Image.Width + 20, 0); <br>  DrawImageBorder(g, Image, 0, 0, 5, kcWhite, 3, Attributes); <br>  g.DrawImage(Image, GpRect(0.0, 0, Image.Width, Image.Height), <br>              0.0, 0.0, Image.Width, Image.Height, utPixel, Attributes); <br>  Attributes.Free; <br>  Brush.Free; <br>  Image.Free; <br>end; </p> <p> <img height=94 alt="" src="http://www.shnenglu.com/images/cppblog_com/flyinghare/52-4.jpg" width=330 border=0></p> <p> </p> <p>鍥懼洓</p> <p>    涓婇潰鐨勬晥鏋滃浘涓紝宸﹁竟鏄師鍥撅紝涓棿鏄?涓儚绱犵殑鎻忚竟鍥撅紝鍙寵竟鏄?涓儚绱犵殑鎻忚竟鍥撅紝鍏朵腑鏈?鍍忕礌鐨勬ā緋婃墿鏁c備粠鍥句腑鍙互鐪嬪嚭錛屾垜浠?ff00ff00涓洪忔槑鑹插鐞嗗浘鍍忓洓涓鍚庯紝鍦ㄤ腑闂村拰鍙寵竟鐨勬弿杈瑰浘涓紝榪樻槸寰堟槑鏄劇殑鐪嬪埌鍥涗釜瑙掓湁寰堟貳鐨勭豢鑹詫紝姝f槸榪欎釜鍘熷洜錛屽湪涓棿鍥劇殑鍦嗚鎻忚竟鏈夋槑鏄劇殑閿嬌銆?/p> <p> </p> <p>    鏈鍚庝綔鍑犵偣璇存槑錛?/p> <p>    1銆佹湰鏂囩函灞炰笟浣欏涔犲拰鐮旂┒鐨勫績寰楋紝騫墮潪浠涔堟瀹楃殑綆楁硶錛?/p> <p>    2銆佸洜涓烘湰鏂囦唬鐮佹槸瀛︿範鏃跺嵆鍏村啓鐨勶紝騫墮潪浼樺寲浠g爜錛岃屼笖鏄互榪囩▼褰㈠紡鍑虹幇鐨勶紝鏈夊叴瓚g殑鏈嬪弸鍙互鑷繁榪涜浼樺寲鏀硅繘錛屽啓鎴愮被鎴栬呭厓浠舵洿濂斤紙鐢變簬綆楁硶鍜屽姛鑳介兘涓嶆槸寰堝畬鍠勶紝鎵浠ユ垜娌″啓鎴愮被鐨勫艦寮忥級錛?/p> <p>    3銆佷緥瀛愪腑鐨凣DI+鐗堟湰緋繪湰浜鴻嚜宸辨敼鍐欑殑錛屼笌緗戜笂嫻侀氱殑鐗堟湰涓嶅畬鍏ㄥ吋瀹癸紝濡傞渶浣跨敤鏈増鏈紝璇峰弬鐓с奊DI+ for VCL鍩虹 -- GDI+ 涓?VCL 銆嬩竴鏂囩殑涓嬭澆鍦板潃錛屽茍璇風暀鎰忓悗闈㈢殑淇敼璇存槑銆?/p> <p>    4銆佸鏈夊ソ鐨勫緩璁紝璇鋒潵淇★細<a href="mailto:maozefa@hotmail.com">maozefa@hotmail.com</a></p> <p> </p> <p>    鏇存柊(2008-8-5 12:50)錛氬湪MakeExpand榪囩▼涓紝鏄寜鍥捐薄閫愮偣鐢ㄤ綅鍥劇敾絎旂煩闃靛~鍏呯殑錛屾瘡涓儚绱犵偣閮借榪涜鐭╅樀澶у皬鐨勬搷浣滐紝鏈灝忕殑1鍍忕礌鎵╁睍鐨勭煩闃靛ぇ灝忎負3 * 3錛屽彲瑙佹墿灞曢熷害鏄笉澶х悊鎯崇殑銆備粖澶╁浠g爜浣滀簡涓鐐逛慨鏀癸紝瀵規瘡涓薄绱犵偣閮借繘琛屼簡鍒ゆ柇錛屽鏋滄槸杈圭晫鍍忕礌錛屽垯浣滅敾絎旂煩闃靛~鍏咃紝鍚﹀垯鐩存帴璺寵繃錛岃繖鏍蜂竴鏉ワ紝閫熷害搴旇鎻愰珮涓嶅皯錛堟病浣滄祴璇曪紝澧炲姞鐨勪唬鐮佺敤綰㈣壊鏍囧嚭錛屾湁鍏磋叮鑰呭彲浠ユ祴璇曪級銆?/p> <p> <br>鍘熶綔鑰呯浉鍏蟲枃绔狅細<br><a title="GDI+ 鍦―elphi紼嬪簭鐨勫簲鐢?-- 鍙皟鑺傜殑鏂囧瓧闃村獎鐗規晥" >GDI+ 鍦―elphi紼嬪簭鐨勫簲鐢?-- 鍙皟鑺傜殑鏂囧瓧闃村獎鐗規晥</a><br><a title="GDI+鍦―elphi紼嬪簭鐨勫簲鐢?– Photoshop鑹茬浉/楗卞拰搴?鏄庡害鍔熻兘" >GDI+鍦―elphi紼嬪簭鐨勫簲鐢?– Photoshop鑹茬浉/楗卞拰搴?鏄庡害鍔熻兘</a></p> <img src ="http://www.shnenglu.com/flyinghare/aggbug/95445.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/flyinghare/" target="_blank">浼氶鐨勫厰瀛?/a> 2009-09-07 10:53 <a href="http://www.shnenglu.com/flyinghare/archive/2009/09/07/95445.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://www.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://yanuoxun.com" target="_blank">亚洲欧美一区二区视频</a>| <a href="http://hy1598.com" target="_blank">亚洲人成毛片在线播放</a>| <a href="http://eee104.com" target="_blank">久久国产欧美</a>| <a href="http://q731.com" target="_blank">欧美一区免费视频</a>| <a href="http://gzzhuangshi.com" target="_blank">一区二区亚洲精品国产</a>| <a href="http://sdxinqi.com" target="_blank">美女图片一区二区</a>| <a href="http://21bridal.com" target="_blank">欧美精品一区视频</a>| <a href="http://yujiaosanye.com" target="_blank">性色一区二区三区</a>| <a href="http://qdssqt.com" target="_blank">久久在线播放</a>| <a href="http://yc0989.com" target="_blank">中文日韩在线视频</a>| <a href="http://cao3e8c8.com" target="_blank">欧美在线三级</a>| <a href="http://080177.com" target="_blank">日韩亚洲一区二区</a>| <a href="http://bmcshy.com" target="_blank">午夜精品成人在线</a>| <a href="http://4008166177.com" target="_blank">亚洲高清一区二区三区</a>| <a href="http://3bmmtv.com" target="_blank">亚洲精品之草原avav久久</a>| <a href="http://yc7878.com" target="_blank">国产精品永久免费在线</a>| <a href="http://yjdm139.com" target="_blank">蜜臀久久久99精品久久久久久</a>| <a href="http://clgtzz.com" target="_blank">欧美黄色免费</a>| <a href="http://811897.com" target="_blank">国产精品毛片va一区二区三区 </a>| <a href="http://18cgh.com" target="_blank">欧美在线1区</a>| <a href="http://223zzz.com" target="_blank">久久综合久久综合久久</a>| <a href="http://163263.com" target="_blank">亚洲新中文字幕</a>| <a href="http://555134.com" target="_blank">久久精品麻豆</a>| <a href="http://xsjgxx.com" target="_blank">亚洲欧美日韩一区在线观看</a>| <a href="http://sapronlee.com" target="_blank">久久精品91久久香蕉加勒比</a>| <a href="http://6k7a.com" target="_blank">亚洲乱码国产乱码精品精可以看</a>| <a href="http://689992.com" target="_blank">亚洲欧美成人精品</a>| <a href="http://pktether.com" target="_blank">日韩视频一区二区在线观看 </a>| <a href="http://vipaiqiyi.com" target="_blank">欧美—级高清免费播放</a>| <a href="http://33wbwb.com" target="_blank">久久国产直播</a>| <a href="http://caokk1.com" target="_blank">欧美日韩亚洲精品内裤</a>| <a href="http://lusaier.com" target="_blank">免费观看不卡av</a>| <a href="http://69xxx6.com" target="_blank">国产精品久久久久aaaa</a>| <a href="http://avtb2068.com" target="_blank">国产欧亚日韩视频</a>| <a href="http://y7y7s.com" target="_blank">日韩一级大片</a>| <a href="http://176sfsf.com" target="_blank">亚洲电影免费观看高清</a>| <a href="http://wwwen41.com" target="_blank">亚洲欧美日韩区</a>| <a href="http://4545www.com" target="_blank">亚洲视频久久</a>| <a href="http://hzdss.com" target="_blank">欧美国产亚洲另类动漫</a>| <a href="http://8xn66w.com" target="_blank">美玉足脚交一区二区三区图片</a>| <a href="http://mm778899.com" target="_blank">国产精品av久久久久久麻豆网</a>| <a href="http://qvod777.com" target="_blank">女女同性精品视频</a>| <a href="http://110488.com" target="_blank">激情欧美一区二区</a>| <a href="http://www18998.com" target="_blank">午夜精品久久久久久久久</a>| <a href="http://bckxy.com" target="_blank">在线一区二区三区四区</a>| <a href="http://151545.com" target="_blank">欧美成人午夜影院</a>| <a href="http://668www.com" target="_blank">免费在线看成人av</a>| <a href="http://baigoso.com" target="_blank">一区二区三区无毛</a>| <a href="http://8013sf.com" target="_blank">久久国产一区</a>| <a href="http://jilcool.com" target="_blank">久久本道综合色狠狠五月</a>| <a href="http://czhqwy.com" target="_blank">欧美午夜大胆人体</a>| <a href="http://373336.com" target="_blank">99香蕉国产精品偷在线观看</a>| <a href="http://www151zh.com" target="_blank">亚洲欧洲另类</a>| <a href="http://59jf.com" target="_blank">欧美大香线蕉线伊人久久国产精品</a>| <a href="http://cczm4.com" target="_blank">久久久99精品免费观看不卡</a>| <a href="http://6faa.com" target="_blank">国产欧美日韩视频一区二区三区 </a>| <a href="http://2061826.com" target="_blank">久久精品一区二区</a>| <a href="http://dgxinshidai.com" target="_blank">久久精品论坛</a>| <a href="http://www-136445.com" target="_blank">国产在线不卡精品</a>| <a href="http://ssis378.com" target="_blank">久久成人免费</a>| <a href="http://9585865.com" target="_blank">美女日韩欧美</a>| <a href="http://zgztby.com" target="_blank">亚洲人成在线观看</a>| <a href="http://592xyy.com" target="_blank">欧美激情亚洲视频</a>| <a href="http://er65.com" target="_blank">99riav国产精品</a>| <a href="http://bocai4488.com" target="_blank">亚洲校园激情</a>| <a href="http://hcbr365.com" target="_blank">国产麻豆成人精品</a>| <a href="http://nxhjzddata.com" target="_blank">欧美在线免费视屏</a>| <a href="http://xxx444vip.com" target="_blank">乱人伦精品视频在线观看</a>| <a href="http://www901aaa.com" target="_blank">国产真实久久</a>| <a href="http://339871.com" target="_blank">美女精品网站</a>| <a href="http://metagasa.com" target="_blank">亚洲精品社区</a>| <a href="http://8xn66w.com" target="_blank">欧美一区二区三区在</a>| <a href="http://4449992.com" target="_blank">国产日本欧美一区二区</a>| <a href="http://000695.com" target="_blank">久久www成人_看片免费不卡</a>| <a href="http://163263.com" target="_blank">久久全国免费视频</a>| <a href="http://www962aa.com" target="_blank">一区二区欧美在线</a>| <a href="http://jqnyc.com" target="_blank">久久亚洲精品伦理</a>| <a href="http://heyzo1199.com" target="_blank">欧美激情偷拍</a>| <a href="http://4399360.com" target="_blank">中文国产成人精品久久一</a>| <a href="http://henhenai1.com" target="_blank">欧美日韩精品三区</a>| <a href="http://456985.com" target="_blank">久久九九热免费视频</a>| <a href="http://bjygp.com" target="_blank">黄色欧美成人</a>| <a href="http://4480vv.com" target="_blank">欧美精品一区二区三</a>| <a href="http://xyyssa.com" target="_blank">一区二区三区视频在线播放</a>| <a href="http://fobdoer.com" target="_blank">先锋a资源在线看亚洲</a>| <a href="http://mmmm43.com" target="_blank">国内自拍一区</a>| <a href="http://maisuper.com" target="_blank">欧美二区乱c少妇</a>| <a href="http://www18998.com" target="_blank">亚洲天堂网在线观看</a>| <a href="http://www-36900.com" target="_blank">欧美一区二区三区在线免费观看</a>| <a href="http://www-44469.com" target="_blank">狠狠色2019综合网</a>| <a href="http://gztgo.com" target="_blank">欧美精品亚洲精品</a>| <a href="http://www369cf.com" target="_blank">午夜在线精品</a>| <a href="http://56lw.com" target="_blank">亚洲国产精品嫩草影院</a>| <a href="http://777888789.com" target="_blank">国产日韩精品入口</a>| <a href="http://henhenai1.com" target="_blank">久久伊人亚洲</a>| <a href="http://www-222304.com" target="_blank">一区二区三区精品在线 </a>| <a href="http://1zz8903.com" target="_blank">在线日韩欧美</a>| <a href="http://zxxx3.com" target="_blank">欧美天天综合网</a>| <a href="http://88488848.com" target="_blank">久久久欧美精品</a>| <a href="http://www-888005.com" target="_blank">日韩午夜三级在线</a>| <a href="http://03qt.com" target="_blank">美女视频黄 久久</a>| <a href="http://syruili.com" target="_blank">亚洲一区二区三区视频</a>| <a href="http://yahuake.com" target="_blank">一区久久精品</a>| <a href="http://1390744.com" target="_blank">国产精品系列在线播放</a>| <a href="http://2061375.com" target="_blank">欧美国产日韩免费</a>| <a href="http://vod3366.com" target="_blank">欧美在线视频观看</a>| <a href="http://www-69669.com" target="_blank">在线视频欧美日韩</a>| <a href="http://1390744.com" target="_blank">免费日韩视频</a>| <a href="http://fengboll.com" target="_blank">久久精品日产第一区二区三区</a>| <a href="http://hankanzhan.com" target="_blank">亚洲精品欧洲精品</a>| <a href="http://hernameplz.com" target="_blank">国外成人在线视频</a>| <a href="http://k-dchina.com" target="_blank">国产精品国产精品</a>| <a href="http://www369cf.com" target="_blank">免费精品99久久国产综合精品</a>| <a href="http://3451215.com" target="_blank">亚洲制服少妇</a>| <a href="http://sdjzzs.com" target="_blank">99视频精品</a>| <a href="http://by56677.com" target="_blank">亚洲欧洲日韩综合二区</a>| <a href="http://yw-95588.com" target="_blank">开心色5月久久精品</a>| <a href="http://88488848.com" target="_blank">香蕉成人伊视频在线观看</a>| <a href="http://7467tom.com" target="_blank">日韩视频中午一区</a>| <a href="http://8090567.com" target="_blank">亚洲国产精品一区二区三区</a>| <a href="http://www559955.com" target="_blank">国产亚洲欧美一区二区三区</a>| <a href="http://xsjgxx.com" target="_blank">国产精品进线69影院</a>| <a href="http://hbzbjxzz.com" target="_blank">欧美精品一区二区高清在线观看</a>| <a href="http://fjrxzscl.com" target="_blank">久久久精品一区</a>| <a href="http://173881.com" target="_blank">香蕉视频成人在线观看</a>| <a href="http://jxjx11.com" target="_blank">亚洲一区在线视频</a>| <a href="http://99chiji1.com" target="_blank">99在线精品视频</a>| <a href="http://422608.com" target="_blank">亚洲国产欧美另类丝袜</a>| <a href="http://sxhrdyb.com" target="_blank">欧美好骚综合网</a>| <a href="http://my6557.com" target="_blank">蜜臀久久久99精品久久久久久</a>| <a href="http://788997.com" target="_blank">久久久久久久波多野高潮日日</a>| <a href="http://easypufu.com" target="_blank">亚洲欧美韩国</a>| <a href="http://7redy.com" target="_blank">午夜宅男欧美</a>| <a href="http://498626.com" target="_blank">欧美伊人久久久久久久久影院</a>| <a href="http://www47777.com" target="_blank">亚洲夜晚福利在线观看</a>| <a href="http://www77vcd.com" target="_blank">一本一本久久a久久精品综合麻豆</a>| <a href="http://cpddddcc.com" target="_blank">亚洲国产一区二区三区在线播</a>| <a href="http://www8888803.com" target="_blank">韩国成人精品a∨在线观看</a>| <a href="http://56qn.com" target="_blank">国产视频一区三区</a>| <a href="http://www-474736.com" target="_blank">国产综合久久久久久</a>| <a href="http://8p3c.com" target="_blank">黄页网站一区</a>| <a href="http://czjrby.com" target="_blank">亚洲福利视频二区</a>| <a href="http://www36633.com" target="_blank">亚洲国产成人精品女人久久久 </a>| <a href="http://95gun.com" target="_blank">亚洲电影在线播放</a>| <a href="http://551731.com" target="_blank">亚洲午夜激情免费视频</a>| <a href="http://caokk1.com" target="_blank">一区二区日韩欧美</a>| <a href="http://whdzjc.com" target="_blank">亚洲一级二级</a>| <a href="http://133686.com" target="_blank">欧美一区二区女人</a>| <a href="http://52sougou.com" target="_blank">久久久亚洲国产美女国产盗摄</a>| <a href="http://566805.com" target="_blank">久久久久久一区</a>| <a href="http://02326a.com" target="_blank">女女同性精品视频</a>| <a href="http://jlkcjz.com" target="_blank">亚洲国产一区二区a毛片</a>| <a href="http://www227zh.com" target="_blank">亚洲激情av在线</a>| <a href="http://www442222.com" target="_blank">一本久久a久久免费精品不卡</a>| <a href="http://www-67499.com" target="_blank">一本一道久久综合狠狠老精东影业 </a>| <a href="http://yada-jg.com" target="_blank">亚洲一区在线看</a>| <a href="http://cz-sensor.com" target="_blank">久久国产手机看片</a>| <a href="http://www7495.com" target="_blank">蜜臀av性久久久久蜜臀aⅴ</a>| <a href="http://39ddtv.com" target="_blank">欧美韩国日本综合</a>| <a href="http://6hzl8.com" target="_blank">日韩亚洲精品在线</a>| <a href="http://www-36900.com" target="_blank">亚洲欧美国产日韩天堂区</a>| <a href="http://fengboll.com" target="_blank">欧美一区二区三区免费观看</a>| <a href="http://725806.com" target="_blank">巨乳诱惑日韩免费av</a>| <a href="http://9966k.com" target="_blank">欧美精品激情在线观看</a>| <a href="http://niu96.com" target="_blank">国产精品欧美日韩</a>| <a href="http://sh738.com" target="_blank">在线不卡免费欧美</a>| <a href="http://di4see.com" target="_blank">夜夜夜久久久</a>| <a href="http://4545www.com" target="_blank">久久经典综合</a>| <a href="http://y4088.com" target="_blank">91久久香蕉国产日韩欧美9色</a>| <a href="http://www0505nn.com" target="_blank">国产精品99久久久久久www</a>| <a href="http://uu774.com" target="_blank">久久精品亚洲精品</a>| <a href="http://25axxa.com" target="_blank">欧美人与禽猛交乱配</a>| <a href="http://roujizz.com" target="_blank">国产日韩欧美一区</a>| <a href="http://7a6a.com" target="_blank">亚洲免费观看在线观看</a>| <a href="http://jorhom.com" target="_blank">欧美一区二区视频在线观看</a>| <a href="http://jdss777.com" target="_blank">免费人成网站在线观看欧美高清</a>| <a href="http://3374com.com" target="_blank">亚洲国产日韩一区二区</a>| <a href="http://nc04.com" target="_blank">欧美一级视频一区二区</a>| <a href="http://zisxks.com" target="_blank">欧美国产日韩在线</a>| <a href="http://www-5013.com" target="_blank">国内精品久久久久久久影视蜜臀 </a>| <a href="http://32tun.com" target="_blank">在线一区二区三区四区</a>| <a href="http://js6996.com" target="_blank">久久综合给合</a>| <a href="http://660507jj.com" target="_blank">国产精品人成在线观看免费</a>| <a href="http://www5566szy.com" target="_blank">亚洲成在人线av</a>| <a href="http://susan5.com" target="_blank">亚洲欧美一区二区三区在线</a>| <a href="http://www0505nn.com" target="_blank">欧美电影免费观看高清</a>| <a href="http://szywsj.com" target="_blank">亚洲免费综合</a>| <a href="http://haose23.com" target="_blank">欧美久色视频</a>| <a href="http://cz-hongbangfloor.com" target="_blank">在线播放精品</a>| <a href="http://874805.com" target="_blank">欧美在线黄色</a>| <a href="http://lao64.com" target="_blank">一区二区不卡在线视频 午夜欧美不卡'</a>| <a href="http://954k.com" target="_blank">久久国产精品亚洲77777</a>| <a href="http://32666066.com" target="_blank">国产精品va在线播放</a>| <a href="http://621765.com" target="_blank">亚洲人成绝费网站色www</a>| <a href="http://www-474736.com" target="_blank">久久精品伊人</a>| <a href="http://26thb.com" target="_blank">午夜精品亚洲</a>| <a href="http://bocai01.com" target="_blank">欧美午夜精品久久久久久久 </a>| <a href="http://2996611.com" target="_blank">aa成人免费视频</a>| <a href="http://hengbang50.com" target="_blank">欧美不卡视频一区</a>| <a href="http://8484vivo.com" target="_blank">久久国产精品第一页</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>