<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_誓言的爱（孟庆雨）</title><subtitle type="text">I firmly believe that where there is a will, there is a way.</subtitle><id>http://feed.cnblogs.com/blog/u/60720/rss</id><updated>2012-05-11T09:54:45Z</updated><author><name>誓言的爱</name><uri>http://www.cnblogs.com/08shiyan/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/08shiyan/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/60720/rss"/><entry><id>http://www.cnblogs.com/08shiyan/archive/2012/04/21/2462473.html</id><title type="text">WebRequest 忽略缓存</title><summary type="text">publicstaticWebResponseGetResponseNoCache(Uri uri){ // Set a default policy level for the "http:" and "https" schemes. HttpRequestCachePolicy policy =newHttpRequestCachePolicy(HttpRequestCacheLevel.Default); HttpWebRequest.DefaultCachePolicy= policy; // Create the request. WebReq</summary><published>2012-04-21T14:32:00Z</published><updated>2012-04-21T14:32:00Z</updated><author><name>誓言的爱</name><uri>http://www.cnblogs.com/08shiyan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/08shiyan/archive/2012/04/21/2462473.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/08shiyan/archive/2012/04/21/2462473.html"/><content type="html">&lt;pre class="default prettyprint"&gt;&lt;code style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; border-width: 0px; padding: 0px; margin: 0px;"&gt;&lt;span class="kwd" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #00008b; border-width: 0px; padding: 0px; margin: 0px;"&gt;public&lt;/span&gt;&lt;span class="kwd" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #00008b; border-width: 0px; padding: 0px; margin: 0px;"&gt;static&lt;/span&gt;&lt;span class="typ" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; border-width: 0px; padding: 0px; margin: 0px;"&gt;WebResponse&lt;/span&gt;&lt;span class="typ" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; border-width: 0px; padding: 0px; margin: 0px;"&gt;GetResponseNoCache&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;(&lt;/span&gt;&lt;span class="typ" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; border-width: 0px; padding: 0px; margin: 0px;"&gt;Uri&lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt; uri&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;)&lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;{&lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="com" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: gray; border-width: 0px; padding: 0px; margin: 0px;"&gt;// Set a default policy level for the "http:" and "https" schemes.&lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="typ" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; border-width: 0px; padding: 0px; margin: 0px;"&gt;HttpRequestCachePolicy&lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt; policy &lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;=&lt;/span&gt;&lt;span class="kwd" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #00008b; border-width: 0px; padding: 0px; margin: 0px;"&gt;new&lt;/span&gt;&lt;span class="typ" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; border-width: 0px; padding: 0px; margin: 0px;"&gt;HttpRequestCachePolicy&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;(&lt;/span&gt;&lt;span class="typ" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; border-width: 0px; padding: 0px; margin: 0px;"&gt;HttpRequestCacheLevel&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;.&lt;/span&gt;&lt;span class="typ" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; border-width: 0px; padding: 0px; margin: 0px;"&gt;Default&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;);&lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="typ" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; border-width: 0px; padding: 0px; margin: 0px;"&gt;HttpWebRequest&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;.&lt;/span&gt;&lt;span class="typ" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; border-width: 0px; padding: 0px; margin: 0px;"&gt;DefaultCachePolicy&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;=&lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt; policy&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;;&lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="com" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: gray; border-width: 0px; padding: 0px; margin: 0px;"&gt;// Create the request.&lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="typ" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; border-width: 0px; padding: 0px; margin: 0px;"&gt;WebRequest&lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt; request &lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;=&lt;/span&gt;&lt;span class="typ" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; border-width: 0px; padding: 0px; margin: 0px;"&gt;WebRequest&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;.&lt;/span&gt;&lt;span class="typ" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; border-width: 0px; padding: 0px; margin: 0px;"&gt;Create&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;(&lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;uri&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;);&lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="com" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: gray; border-width: 0px; padding: 0px; margin: 0px;"&gt;// Define a cache policy for this request only. &lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="typ" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; border-width: 0px; padding: 0px; margin: 0px;"&gt;HttpRequestCachePolicy&lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt; noCachePolicy &lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;=&lt;/span&gt;&lt;span class="kwd" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #00008b; border-width: 0px; padding: 0px; margin: 0px;"&gt;new&lt;/span&gt;&lt;span class="typ" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; border-width: 0px; padding: 0px; margin: 0px;"&gt;HttpRequestCachePolicy&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;(&lt;/span&gt;&lt;span class="typ" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; border-width: 0px; padding: 0px; margin: 0px;"&gt;HttpRequestCacheLevel&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;.&lt;/span&gt;&lt;span class="typ" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; border-width: 0px; padding: 0px; margin: 0px;"&gt;NoCacheNoStore&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;);&lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; request&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;.&lt;/span&gt;&lt;span class="typ" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; border-width: 0px; padding: 0px; margin: 0px;"&gt;CachePolicy&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;=&lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt; noCachePolicy&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;;&lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="typ" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; border-width: 0px; padding: 0px; margin: 0px;"&gt;WebResponse&lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt; response &lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;=&lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt; request&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;.&lt;/span&gt;&lt;span class="typ" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; border-width: 0px; padding: 0px; margin: 0px;"&gt;GetResponse&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;();&lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="typ" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; border-width: 0px; padding: 0px; margin: 0px;"&gt;Console&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;.&lt;/span&gt;&lt;span class="typ" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; border-width: 0px; padding: 0px; margin: 0px;"&gt;WriteLine&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;(&lt;/span&gt;&lt;span class="str" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #800000; border-width: 0px; padding: 0px; margin: 0px;"&gt;"IsFromCache? {0}"&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;,&lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt; response&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;.&lt;/span&gt;&lt;span class="typ" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; border-width: 0px; padding: 0px; margin: 0px;"&gt;IsFromCache&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;);&lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="kwd" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #00008b; border-width: 0px; padding: 0px; margin: 0px;"&gt;return&lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt; response&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;;&lt;/span&gt;&lt;span class="pln" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="pun" style="border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-width: 0px; padding: 0px; margin: 0px;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;img src="http://www.cnblogs.com/08shiyan/aggbug/2462473.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/08shiyan/archive/2012/04/21/2462473.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/08shiyan/archive/2012/04/11/2441847.html</id><title type="text">Outlook-style Wheel Mouse Behavior</title><summary type="text">原文链接：http://social.msdn.microsoft.com/forums/en-US/winforms/thread/eb922ed2-1036-41ca-bd15-49daed7b637c/using System;using System.ComponentModel;using System.Drawing;using System.Windows.Forms;using System.Runtime.InteropServices;namespace WindowsApplication1 { public partial class Form1 : Form, IMe</summary><published>2012-04-11T02:08:00Z</published><updated>2012-04-11T02:08:00Z</updated><author><name>誓言的爱</name><uri>http://www.cnblogs.com/08shiyan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/08shiyan/archive/2012/04/11/2441847.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/08shiyan/archive/2012/04/11/2441847.html"/><content type="html">&lt;p&gt;&lt;span&gt;原文链接：&lt;a href="http://social.msdn.microsoft.com/forums/en-US/winforms/thread/eb922ed2-1036-41ca-bd15-49daed7b637c/"&gt;http://social.msdn.microsoft.com/forums/en-US/winforms/thread/eb922ed2-1036-41ca-bd15-49daed7b637c/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;using System;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;using System.ComponentModel;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;using System.Drawing;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;using System.Windows.Forms;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;using System.Runtime.InteropServices;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;namespace WindowsApplication1 {&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; public partial class Form1 : Form, IMessageFilter {&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Form1() {&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent();&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Application.AddMessageFilter(this);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool PreFilterMessage(ref Message m) {&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (m.Msg == 0x20a) {&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // WM_MOUSEWHEEL, find the control at screen position m.LParam&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Point pos = new Point(m.LParam.ToInt32() &amp;amp; 0xffff, m.LParam.ToInt32() &amp;gt;&amp;gt; 16);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IntPtr hWnd = WindowFromPoint(pos);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (hWnd != IntPtr.Zero &amp;amp;&amp;amp; hWnd != m.HWnd &amp;amp;&amp;amp; Control.FromHandle(hWnd) != null) {&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SendMessage(hWnd, m.Msg, m.WParam, m.LParam);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // P/Invoke declarations&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [DllImport("user32.dll")]&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static extern IntPtr WindowFromPoint(Point pt);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [DllImport("user32.dll")]&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/08shiyan/aggbug/2441847.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/08shiyan/archive/2012/04/11/2441847.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/08shiyan/archive/2012/03/31/2427532.html</id><title type="text">NSIS 刷新ICO缓存</title><summary type="text">!define SHCNE_ASSOCCHANGED 0x8000000!define SHCNF_IDLIST 0System::Call'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)'</summary><published>2012-03-31T11:21:00Z</published><updated>2012-03-31T11:21:00Z</updated><author><name>誓言的爱</name><uri>http://www.cnblogs.com/08shiyan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/08shiyan/archive/2012/03/31/2427532.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/08shiyan/archive/2012/03/31/2427532.html"/><content type="html">&lt;p&gt;&lt;span class="pun"&gt;&lt;br /&gt;!&lt;/span&gt;&lt;span class="pln"&gt;define SHCNE_ASSOCCHANGED &lt;/span&gt;&lt;span class="lit"&gt;0x8000000&lt;/span&gt;&lt;br /&gt;&lt;span class="pun"&gt;!&lt;/span&gt;&lt;span class="pln"&gt;define SHCNF_IDLIST &lt;/span&gt;&lt;span class="lit"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="typ"&gt;System&lt;/span&gt;&lt;span class="pun"&gt;::&lt;/span&gt;&lt;span class="typ"&gt;Call&lt;/span&gt;&lt;span class="str"&gt;'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)'&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/08shiyan/aggbug/2427532.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/08shiyan/archive/2012/03/31/2427532.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/08shiyan/archive/2012/03/31/2426479.html</id><title type="text">c fopen文件读写</title><summary type="text">fopen&lt;cstdio&gt;FILE * fopen ( const char * filename, const char * mode );Open fileOpens the file whose name is specified in the parameterfilenameand associates it with a stream that can be identified in future operations by the FILE object whose pointer is returned. The operations that are allow</summary><published>2012-03-31T02:17:00Z</published><updated>2012-03-31T02:17:00Z</updated><author><name>誓言的爱</name><uri>http://www.cnblogs.com/08shiyan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/08shiyan/archive/2012/03/31/2426479.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/08shiyan/archive/2012/03/31/2426479.html"/><content type="html">&lt;p&gt;&lt;strong&gt;fopen&lt;/strong&gt;&lt;/p&gt;&lt;div id="I_file"&gt;&amp;lt;cstdio&amp;gt;&lt;/div&gt;&lt;div class="C_prototype"&gt;&lt;pre&gt;FILE * fopen ( const char * filename, const char * mode );&lt;/pre&gt;&lt;/div&gt;&lt;div id="I_description"&gt;Open file&lt;/div&gt;&lt;p&gt;&lt;span&gt;Opens the file whose name is specified in the parameter&amp;nbsp;&lt;/span&gt;&lt;em&gt;filename&lt;/em&gt;&lt;span&gt;&amp;nbsp;and associates it with a stream that can be identified in future operations by the FILE object whose pointer is returned. The operations that are allowed on the stream and how these are performed are defined by the&amp;nbsp;&lt;/span&gt;&lt;em&gt;mode&lt;/em&gt;&lt;span&gt;&amp;nbsp;parameter.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;The running environment supports at least&amp;nbsp;&lt;/span&gt;&lt;tt&gt;FOPEN_MAX&lt;/tt&gt;&lt;span&gt;&amp;nbsp;files open simultaneously;&amp;nbsp;&lt;/span&gt;&lt;tt&gt;FOPEN_MAX&lt;/tt&gt;&lt;span&gt;&amp;nbsp;is a macro constant defined in&amp;nbsp;&lt;/span&gt;&lt;tt&gt;&amp;lt;cstdio&amp;gt;&lt;/tt&gt;&lt;span&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Parameters&lt;/strong&gt;&lt;/p&gt;&lt;dl&gt;&lt;dt&gt;filename&lt;/dt&gt;&lt;dd&gt;C string containing the name of the file to be opened. This paramenter must follow the file name specifications of the running environment and can include a path if the system supports it.&lt;/dd&gt;&lt;dt&gt;mode&lt;/dt&gt;&lt;dd&gt;C string containing a file access modes. It can be:&lt;br /&gt;&lt;table class="boxed"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;"r"&lt;/td&gt;&lt;td&gt;Open a file for reading. The file must exist.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;"w"&lt;/td&gt;&lt;td&gt;Create an empty file for writing. If a file with the same name already exists its content is erased and the file is treated as a new empty file.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;"a"&lt;/td&gt;&lt;td&gt;Append to a file. Writing operations append data at the end of the file. The file is created if it does not exist.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;"r+"&lt;/td&gt;&lt;td&gt;Open a file for update both reading and writing. The file must exist.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;"w+"&lt;/td&gt;&lt;td&gt;Create an empty file for both reading and writing. If a file with the same name already exists its content is erased and the file is treated as a new empty file.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;"a+"&lt;/td&gt;&lt;td&gt;Open a file for reading and appending. All writing operations are performed at the end of the file, protecting the previous content to be overwritten. You can reposition (&lt;a href="http://www.cplusplus.com/fseek"&gt;fseek&lt;/a&gt;,&amp;nbsp;&lt;a href="http://www.cplusplus.com/rewind"&gt;rewind&lt;/a&gt;) the internal pointer to anywhere in the file for reading, but writing operations will move it back to the end of file. The file is created if it does not exist.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;p&gt;&lt;span&gt;With the&amp;nbsp;&lt;/span&gt;&lt;em&gt;mode&lt;/em&gt;&lt;span&gt;&amp;nbsp;specifiers above the file is open as a&amp;nbsp;&lt;/span&gt;&lt;em&gt;text file&lt;/em&gt;&lt;span&gt;. In order to open a file as a&amp;nbsp;&lt;/span&gt;&lt;em&gt;binary file&lt;/em&gt;&lt;span&gt;, a&amp;nbsp;&lt;/span&gt;&lt;tt&gt;"b"&lt;/tt&gt;&lt;span&gt;&amp;nbsp;character has to be included in the&amp;nbsp;&lt;/span&gt;&lt;em&gt;mode&lt;/em&gt;&lt;span&gt;&amp;nbsp;string. This additional&amp;nbsp;&lt;/span&gt;&lt;tt&gt;"b"&lt;/tt&gt;&lt;span&gt;&amp;nbsp;character can either be appended at the end of the string (thus making the following compound modes: "rb", "wb", "ab", "r+b", "w+b", "a+b") or be inserted between the letter and the&amp;nbsp;&lt;/span&gt;&lt;tt&gt;"+"&lt;/tt&gt;&lt;span&gt;&amp;nbsp;sign for the mixed modes ("rb+", "wb+", "ab+").&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Additional characters may follow the sequence, although they should have no effect. For example,&amp;nbsp;&lt;/span&gt;&lt;tt&gt;"t"&lt;/tt&gt;&lt;span&gt;&amp;nbsp;is sometimes appended to make explicit the file is a&amp;nbsp;&lt;/span&gt;&lt;em&gt;text file&lt;/em&gt;&lt;span&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;In the case of&amp;nbsp;&lt;/span&gt;&lt;em&gt;text files&lt;/em&gt;&lt;span&gt;, depending on the environment where the application runs, some special character conversion may occur in input/output operations to adapt them to a system-specific text file format. In many environments, such as most UNIX-based systems, it makes no difference to open a file as a text file or a binary file; Both are treated exactly the same way, but differentiation is recommended for a better portability.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;For the modes where both read and writing (or appending) are allowed (those which include a&amp;nbsp;&lt;/span&gt;&lt;tt&gt;"+"&lt;/tt&gt;&lt;span&gt;&amp;nbsp;sign), the stream should be flushed (&lt;/span&gt;&lt;a href="http://www.cplusplus.com/fflush"&gt;fflush&lt;/a&gt;&lt;span&gt;) or repositioned (&lt;/span&gt;&lt;a href="http://www.cplusplus.com/fseek"&gt;fseek&lt;/a&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.cplusplus.com/fsetpos"&gt;fsetpos&lt;/a&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.cplusplus.com/rewind"&gt;rewind&lt;/a&gt;&lt;span&gt;) between either a reading operation followed by a writing operation or a writing operation followed by a reading operation.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Return Value&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;If the file has been successfully opened the function will return a pointer to a&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.cplusplus.com/FILE"&gt;FILE&lt;/a&gt;&lt;span&gt;&amp;nbsp;object that is used to identify the stream on all further operations involving it. Otherwise, a null pointer is returned.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;&lt;div class="auto"&gt;&lt;table class="snippet"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="rownum"&gt;&lt;pre&gt;&lt;code&gt;1&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;4&lt;br /&gt;5&lt;br /&gt;6&lt;br /&gt;7&lt;br /&gt;8&lt;br /&gt;9&lt;br /&gt;10&lt;br /&gt;11&lt;br /&gt;12&lt;br /&gt;13&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class="source"&gt;&lt;pre&gt;&lt;code&gt;&lt;cite&gt;/* fopen example */&lt;/cite&gt; &lt;dfn&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/dfn&gt; &lt;var&gt;int&lt;/var&gt; main () &lt;br /&gt;{&lt;br /&gt; FILE * pFile; pFile = fopen (&lt;kbd&gt;"myfile.txt"&lt;/kbd&gt;,&lt;kbd&gt;"w"&lt;/kbd&gt;); &lt;br /&gt;&lt;var&gt;if&lt;/var&gt; (pFile!=NULL) &lt;br /&gt;{&lt;br /&gt; fputs (&lt;kbd&gt;"fopen example"&lt;/kbd&gt;,pFile); &lt;br /&gt;fclose (pFile); &lt;br /&gt;} &lt;br /&gt;&lt;var&gt; return&lt;/var&gt; 0; &lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;原文连接：&lt;a href="http://www.cplusplus.com/reference/clibrary/cstdio/fopen/"&gt;http://www.cplusplus.com/reference/clibrary/cstdio/fopen/&lt;/a&gt;&lt;br /&gt;一个不错的C++在线帮助文档&amp;nbsp;&lt;a href="http://www.cplusplus.com/reference/clibrary/cstdio/fopen/"&gt;http://www.cplusplus.com/&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/08shiyan/aggbug/2426479.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/08shiyan/archive/2012/03/31/2426479.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/08shiyan/archive/2012/03/16/2399617.html</id><title type="text">C++完美实现Singleton模式</title><summary type="text">Singleton模式是常用的设计模式之一，但是要实现一个真正实用的设计模式却也不是件容易的事情。1. 标准的实现class Singleton{public: static Singleton * Instance() { if( 0== _instance) { _instance = new Singleton; } return _instance; }protected: Sin...</summary><published>2012-03-15T22:45:00Z</published><updated>2012-03-15T22:45:00Z</updated><author><name>誓言的爱</name><uri>http://www.cnblogs.com/08shiyan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/08shiyan/archive/2012/03/16/2399617.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/08shiyan/archive/2012/03/16/2399617.html"/><content type="html">&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;pre&gt;Singleton模式是常用的设计模式之一，但是要实现一个真正实用的设计模式却也不是件容易的事情。&lt;br /&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;.         标准的实现&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; Singleton&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;:&lt;br /&gt;       &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; Singleton * Instance()&lt;br /&gt;       {&lt;br /&gt;              &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;( &lt;span style="color: #800080;"&gt;0&lt;/span&gt;== _instance)&lt;br /&gt;              {&lt;br /&gt;                     _instance = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Singleton;&lt;br /&gt;              }&lt;br /&gt;              &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; _instance;&lt;br /&gt;       }&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt;:&lt;br /&gt;       Singleton(&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;)&lt;br /&gt;       {&lt;br /&gt;       }&lt;br /&gt;       &lt;span style="color: #0000ff;"&gt;virtual&lt;/span&gt; ~Singleton(&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;)&lt;br /&gt;       {&lt;br /&gt;       }&lt;br /&gt;       &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; Singleton* _instance;&lt;br /&gt;};&lt;br /&gt;       这是教科书上使用的方法。看起来没有什么问题，其实包含很多的问题。下面我们一个一个的解决。&lt;br /&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;.         自动垃圾回收&lt;br /&gt;上面的程序必须记住在程序结束的时候，释放内存。为了让它自动的释放内存，我们引入auto_ptr改变它。&lt;br /&gt;#include &amp;lt;memory&amp;gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; std;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; Singleton&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;:&lt;br /&gt;       &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; Singleton * Instance()&lt;br /&gt;       {&lt;br /&gt;              &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;( &lt;span style="color: #800080;"&gt;0&lt;/span&gt;== _instance.&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;())&lt;br /&gt;              {&lt;br /&gt;                     _instance.reset( &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Singleton);&lt;br /&gt;              }&lt;br /&gt;              &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; _instance.&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;();&lt;br /&gt;       }&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt;:&lt;br /&gt;       Singleton(&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;)&lt;br /&gt;       {&lt;br /&gt;              cout &amp;lt;&amp;lt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Create Singleton&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;lt;&amp;lt;endl;&lt;br /&gt;       }&lt;br /&gt;       &lt;span style="color: #0000ff;"&gt;virtual&lt;/span&gt; ~Singleton(&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;)&lt;br /&gt;       {&lt;br /&gt;              cout &amp;lt;&amp;lt; &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Destroy Singleton&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;lt;&amp;lt;endl;&lt;br /&gt;       }&lt;br /&gt;       friend &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; auto_ptr&amp;lt;Singleton&amp;gt;;&lt;br /&gt;       &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; auto_ptr&amp;lt;Singleton&amp;gt; _instance;&lt;br /&gt;};&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;Singleton.cpp&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;auto_ptr&amp;lt;Singleton&amp;gt; Singleton::_instance;&lt;br /&gt;&lt;span style="color: #800080;"&gt;3&lt;/span&gt;.         增加模板&lt;br /&gt;在我的一个工程中，有多个的Singleton类，对Singleton类，我都要实现上面这一切，这让我觉得烦死了。于是我想到了模板来完成这些重复的工作。&lt;br /&gt;现在我们要添加本文中最吸引人单件实现：&lt;br /&gt;&lt;span style="color: #008000;"&gt;/*&lt;/span&gt;&lt;span style="color: #008000;"&gt;*******************************************************************&lt;br /&gt;    (c) 2003-2005 C2217 Studio&lt;br /&gt;    Module:    Singleton.h&lt;br /&gt;    Author:     Yangjun D.&lt;br /&gt;    Created:    9/3/2005   23:17&lt;br /&gt;    Purpose:    Implement singleton pattern&lt;br /&gt;    History:&lt;br /&gt;********************************************************************&lt;/span&gt;&lt;span style="color: #008000;"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;#pragma&lt;/span&gt; once&lt;br /&gt; &lt;br /&gt;#include &amp;lt;memory&amp;gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; std;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; C2217::Win32;&lt;br /&gt; &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; C2217&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; Pattern&lt;br /&gt;{&lt;br /&gt;template &amp;lt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; T&amp;gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; Singleton&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;:&lt;br /&gt;       &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; inline T* instance();&lt;br /&gt;      &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt;:&lt;br /&gt;       Singleton(&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;){}&lt;br /&gt;       ~Singleton(&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;){}&lt;br /&gt;       Singleton(&lt;span style="color: #0000ff;"&gt;const&lt;/span&gt; Singleton&amp;amp;){}&lt;br /&gt;       Singleton &amp;amp; &lt;span style="color: #0000ff;"&gt;operator&lt;/span&gt;= (&lt;span style="color: #0000ff;"&gt;const&lt;/span&gt; Singleton &amp;amp;){}&lt;br /&gt; &lt;br /&gt;       &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; auto_ptr&amp;lt;T&amp;gt; _instance;&lt;br /&gt;};&lt;br /&gt; &lt;br /&gt;template &amp;lt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; T&amp;gt;&lt;br /&gt;auto_ptr&amp;lt;T&amp;gt; Singleton&amp;lt;T&amp;gt;::_instance;&lt;br /&gt; &lt;br /&gt;template &amp;lt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; T&amp;gt;&lt;br /&gt; inline T* Singleton&amp;lt;T&amp;gt;::instance()&lt;br /&gt;{&lt;br /&gt;       &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;( &lt;span style="color: #800080;"&gt;0&lt;/span&gt;== _instance.&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;())&lt;br /&gt;       {&lt;br /&gt;              _instance.reset ( &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; T);&lt;br /&gt;       }&lt;br /&gt;      &lt;br /&gt;       &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; _instance.&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;();&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;Class that will implement the singleton mode,&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;must use the macro in it's delare file&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#define&lt;/span&gt; DECLARE_SINGLETON_CLASS( type ) \&lt;br /&gt;       friend &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; auto_ptr&amp;lt; type &amp;gt;;\&lt;br /&gt;       friend &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; Singleton&amp;lt; type &amp;gt;;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;span style="color: #800080;"&gt;4&lt;/span&gt;.         线程安全&lt;br /&gt;上面的程序可以适应单线程的程序。但是如果把它用到多线程的程序就会发生问题。主要的问题在于同时执行_instance.reset ( &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; T); 就会同时产生两个新的对象，然后马上释放一个，这跟Singleton模式的本意不符。所以，你需要更加安全的版本：&lt;br /&gt;&lt;span style="color: #008000;"&gt;/*&lt;/span&gt;&lt;span style="color: #008000;"&gt;*******************************************************************&lt;br /&gt;    (c) 2003-2005 C2217 Studio&lt;br /&gt;    Module:    Singleton.h&lt;br /&gt;    Author:     Yangjun D.&lt;br /&gt;    Created:    9/3/2005   23:17&lt;br /&gt;    Purpose:    Implement singleton pattern&lt;br /&gt;    History:&lt;br /&gt;********************************************************************&lt;/span&gt;&lt;span style="color: #008000;"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;#pragma&lt;/span&gt; once&lt;br /&gt; &lt;br /&gt;#include &amp;lt;memory&amp;gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; std;&lt;br /&gt;#include &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Interlocked.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; C2217::Win32;&lt;br /&gt; &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; C2217&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; Pattern&lt;br /&gt;{&lt;br /&gt;template &amp;lt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; T&amp;gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; Singleton&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;:&lt;br /&gt;       &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; inline T* instance();&lt;br /&gt;      &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt;:&lt;br /&gt;       Singleton(&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;){}&lt;br /&gt;       ~Singleton(&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;){}&lt;br /&gt;       Singleton(&lt;span style="color: #0000ff;"&gt;const&lt;/span&gt; Singleton&amp;amp;){}&lt;br /&gt;       Singleton &amp;amp; &lt;span style="color: #0000ff;"&gt;operator&lt;/span&gt;= (&lt;span style="color: #0000ff;"&gt;const&lt;/span&gt; Singleton &amp;amp;){}&lt;br /&gt; &lt;br /&gt;       &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; auto_ptr&amp;lt;T&amp;gt; _instance;&lt;br /&gt;       &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; CResGuard _rs;&lt;br /&gt;};&lt;br /&gt; &lt;br /&gt;template &amp;lt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; T&amp;gt;&lt;br /&gt;auto_ptr&amp;lt;T&amp;gt; Singleton&amp;lt;T&amp;gt;::_instance;&lt;br /&gt; &lt;br /&gt;template &amp;lt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; T&amp;gt;&lt;br /&gt;CResGuard Singleton&amp;lt;T&amp;gt;::_rs;&lt;br /&gt; &lt;br /&gt;template &amp;lt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; T&amp;gt;&lt;br /&gt; inline T* Singleton&amp;lt;T&amp;gt;::instance()&lt;br /&gt;{&lt;br /&gt;       &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;( &lt;span style="color: #800080;"&gt;0&lt;/span&gt; == _instance.&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;() )&lt;br /&gt;       {&lt;br /&gt;              CResGuard::CGuard gd(_rs);&lt;br /&gt;              &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;( &lt;span style="color: #800080;"&gt;0&lt;/span&gt;== _instance.&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;())&lt;br /&gt;              {&lt;br /&gt;                     _instance.reset ( &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; T);&lt;br /&gt;              }&lt;br /&gt;       }&lt;br /&gt;       &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; _instance.&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;();&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;Class that will implement the singleton mode,&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;must use the macro in it's delare file&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#define&lt;/span&gt; DECLARE_SINGLETON_CLASS( type ) \&lt;br /&gt;       friend &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; auto_ptr&amp;lt; type &amp;gt;;\&lt;br /&gt;       friend &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; Singleton&amp;lt; type &amp;gt;;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;       CresGuard 类主要的功能是线程访问同步,代码如下：&lt;br /&gt;&lt;span style="color: #008000;"&gt;/*&lt;/span&gt;&lt;span style="color: #008000;"&gt;*****************************************************************************&lt;br /&gt;Module:  Interlocked.h&lt;br /&gt;Notices: Copyright (c) 2000 Jeffrey Richter&lt;br /&gt;*****************************************************************************&lt;/span&gt;&lt;span style="color: #008000;"&gt;*/&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;#pragma&lt;/span&gt; once&lt;br /&gt;&lt;span style="color: #808080;"&gt;//////////////////////////////////////////////////////////////////////////////&lt;/span&gt;&lt;span style="color: #008000;"&gt;/&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Instances of this class will be accessed by multiple threads. So,&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; all members of this class (except the constructor and destructor)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; must be thread-safe.&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; CResGuard {&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;:&lt;br /&gt;   CResGuard()  { m_lGrdCnt = &lt;span style="color: #800080;"&gt;0&lt;/span&gt;; InitializeCriticalSection(&amp;amp;m_cs); }&lt;br /&gt;   ~CResGuard() { DeleteCriticalSection(&amp;amp;m_cs); }&lt;br /&gt; &lt;br /&gt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; IsGuarded is used for debugging&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;   BOOL IsGuarded() &lt;span style="color: #0000ff;"&gt;const&lt;/span&gt; { &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;(m_lGrdCnt &amp;gt; &lt;span style="color: #800080;"&gt;0&lt;/span&gt;); }&lt;br /&gt; &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;:&lt;br /&gt;   &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; CGuard {&lt;br /&gt;   &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;:&lt;br /&gt;      CGuard(CResGuard&amp;amp; rg) : m_rg(rg) { m_rg.Guard(); };&lt;br /&gt;      ~CGuard() { m_rg.Unguard(); }&lt;br /&gt; &lt;br /&gt;   &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt;:&lt;br /&gt;      CResGuard&amp;amp; m_rg;&lt;br /&gt;   };&lt;br /&gt; &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt;:&lt;br /&gt;   &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Guard()   { EnterCriticalSection(&amp;amp;m_cs); m_lGrdCnt++; }&lt;br /&gt;   &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Unguard() { m_lGrdCnt--; LeaveCriticalSection(&amp;amp;m_cs); }&lt;br /&gt; &lt;br /&gt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Guard/Unguard can only be accessed by the nested CGuard class.&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;   friend &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; CResGuard::CGuard;&lt;br /&gt; &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt;:&lt;br /&gt;   CRITICAL_SECTION m_cs;&lt;br /&gt;   &lt;span style="color: #0000ff;"&gt;long&lt;/span&gt; m_lGrdCnt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; # of EnterCriticalSection calls&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;};&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;span style="color: #808080;"&gt;//////////////////////////////////////////////////////////////////////////////&lt;/span&gt;&lt;span style="color: #008000;"&gt;/&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #800080;"&gt;5&lt;/span&gt;.         实用方法&lt;br /&gt;比如你有一个需要实现单件模式的类，就应该这样实现：&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;#pragma&lt;/span&gt; once&lt;br /&gt;#include &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;singleton.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; C2217::Pattern;&lt;br /&gt; &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; ServiceManger&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;:&lt;br /&gt;       &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Run()&lt;br /&gt;       {&lt;br /&gt;       }&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt;:&lt;br /&gt;       ServiceManger(&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;)&lt;br /&gt;       {&lt;br /&gt;       }&lt;br /&gt;       &lt;span style="color: #0000ff;"&gt;virtual&lt;/span&gt; ~ServiceManger(&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;)&lt;br /&gt;       {&lt;br /&gt;       }&lt;br /&gt;       DECLARE_SINGLETON_CLASS(ServiceManger);&lt;br /&gt;};&lt;br /&gt; &lt;br /&gt;typedef Singleton&amp;lt;ServiceManger&amp;gt; SSManger;&lt;br /&gt; &lt;br /&gt;在使用的时候很简单，跟一般的Singleton实现的方法没有什么不同。&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; _tmain(&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; argc, _TCHAR* argv[])&lt;br /&gt;{&lt;br /&gt;        SSManger::instance()-&amp;gt;Run();&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;一个简单的Singleton模式的实现，可以看到C++语言背后隐藏的丰富的语意，我希望有人能实现一个更好的Singleton让大家学习。我从一开始实现Singleton类的过程，其实就是我学习C++的过程，越是深入越觉得C++了不起。&lt;br /&gt; &lt;br /&gt; &lt;/pre&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/08shiyan/aggbug/2399617.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/08shiyan/archive/2012/03/16/2399617.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/08shiyan/archive/2012/03/14/2395820.html</id><title type="text">计划不如变化，从今天起转 C++</title><summary type="text">C++中的传递引用 与 返回引用：#include &lt;iostream&gt;#include "Point.cpp"Point &amp;F(Point &amp;p);int main(){ Point p(3, 5); std::cout &lt;&lt; "X: " &lt;&lt; p.GetX() &lt;&lt; " Y: " &lt;&lt; p.GetY() &lt;&lt; std::endl; p.AddX(); p.AddY(); std::cout &lt;&lt; "X: " &amp;l</summary><published>2012-03-14T05:55:00Z</published><updated>2012-03-14T05:55:00Z</updated><author><name>誓言的爱</name><uri>http://www.cnblogs.com/08shiyan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/08shiyan/archive/2012/03/14/2395820.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/08shiyan/archive/2012/03/14/2395820.html"/><content type="html">&lt;p&gt;C++中的传递引用 与 返回引用：&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;pre&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Point.cpp&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Point &amp;amp;F(Point &amp;amp;p);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; main()&lt;br /&gt;{&lt;br /&gt;    Point p(&lt;span style="color: #800080;"&gt;3&lt;/span&gt;, &lt;span style="color: #800080;"&gt;5&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;    std::cout &amp;lt;&amp;lt; &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;X: &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt; &amp;lt;&amp;lt; p.GetX() &amp;lt;&amp;lt; &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt; Y: &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt; &amp;lt;&amp;lt; p.GetY() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;&lt;br /&gt;    p.AddX();&lt;br /&gt;    p.AddY();&lt;br /&gt;&lt;br /&gt;    std::cout &amp;lt;&amp;lt; &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;X: &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt; &amp;lt;&amp;lt; p.GetX() &amp;lt;&amp;lt; &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt; Y: &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt; &amp;lt;&amp;lt; p.GetY() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    Point &amp;amp;p2 = F(p);&lt;br /&gt;&lt;br /&gt;    std::cout &amp;lt;&amp;lt; &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;X: &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt; &amp;lt;&amp;lt; p.GetX() &amp;lt;&amp;lt; &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt; Y: &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt; &amp;lt;&amp;lt; p.GetY() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;    &lt;br /&gt;    std::cout &amp;lt;&amp;lt; &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;p2.X: &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt; &amp;lt;&amp;lt; p2.GetX() &amp;lt;&amp;lt; &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt; p2.Y: &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt; &amp;lt;&amp;lt; p2.GetY() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;&lt;br /&gt;    p2.AddX();&lt;br /&gt;    p2.AddY();&lt;br /&gt;&lt;br /&gt;    std::cout &amp;lt;&amp;lt; &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;X: &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt; &amp;lt;&amp;lt; p.GetX() &amp;lt;&amp;lt; &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt; Y: &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt; &amp;lt;&amp;lt; p.GetY() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; x;&lt;br /&gt;    std::cin&amp;gt;&amp;gt; x;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #800080;"&gt;0&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Point &amp;amp;F(Point &amp;amp;p)&lt;br /&gt;{&lt;br /&gt;    p.AddX();&lt;br /&gt;    p.AddY();&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;  p;&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Point.cpp&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;pre&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; Point&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; :&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; mX, mY;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;    Point(&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; x,&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; y)&lt;br /&gt;    {&lt;br /&gt;        mX = x;&lt;br /&gt;        mY = y;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; GetX()&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; mX;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; GetY()&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; mY;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; AddX()&lt;br /&gt;    {&lt;br /&gt;        mX++;&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; AddY()&lt;br /&gt;    {&lt;br /&gt;        mY++;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;};&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;运行结果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/86939/2012031413501843.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/08shiyan/aggbug/2395820.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/08shiyan/archive/2012/03/14/2395820.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/08shiyan/archive/2012/03/11/2390502.html</id><title type="text">PlaneProjection 类 表示对象的透视转换（类似三维效果）[silverlight]</title><summary type="text">PlaneProjection 类 表示对象的透视转换,您可以将透视转换应用于UIElement，包括控件。例如，您可以将该效果应用于Grid，而后者又包含TextBox和Button。Demo:&lt;StackPanel Margin="35" Background="Gray"&gt; &lt;StackPanel.Projection&gt; &lt;PlaneProjection RotationX="-35" RotationY="-35" RotationZ="15"/&gt; &amp;</summary><published>2012-03-11T10:59:00Z</published><updated>2012-03-11T10:59:00Z</updated><author><name>誓言的爱</name><uri>http://www.cnblogs.com/08shiyan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/08shiyan/archive/2012/03/11/2390502.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/08shiyan/archive/2012/03/11/2390502.html"/><content type="html">&lt;p&gt;PlaneProjection 类 表示对象的透视转换,&lt;br /&gt;&lt;span&gt;您可以将透视转换应用于&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000080;"&gt;UIElement&lt;/span&gt;&lt;span&gt;，包括控件。例如，您可以将该效果应用于&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000080;"&gt;Grid&lt;/span&gt;&lt;span&gt;，而后者又包含&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000080;"&gt;TextBox&lt;/span&gt;&lt;span&gt;&amp;nbsp;和&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000080;"&gt;Button&lt;/span&gt;&lt;span&gt;。&lt;br /&gt;Demo:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;pre&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;StackPanel &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Margin&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="35"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; Background&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Gray"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;StackPanel.Projection&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;PlaneProjection &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;RotationX&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="-35"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; RotationY&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="-35"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; RotationZ&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="15"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;StackPanel.Projection&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;TextBlock &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Margin&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="10"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;Type Something Below&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;TextBlock&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;TextBox &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Margin&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="10"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;TextBox&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Button &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Margin&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="10"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; Content&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Click"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; Width&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="100"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;效果：&amp;nbsp;&lt;a href="http://samples.msdn.microsoft.com/Silverlight/SampleBrowser/index.htm#/?sref=BasicPerspectiveTransforms"&gt;http://samples.msdn.microsoft.com/Silverlight/SampleBrowser/index.htm#/?sref=BasicPerspectiveTransforms&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span class="selflink"&gt;PlaneProjection&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;具有以下 12 个可用于控制对象的旋转和位置的属性：&lt;/span&gt;&lt;/p&gt;&lt;table id="memberList3" class="members" border="0" align="left"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class="nameColumn"&gt;名称&lt;/th&gt;&lt;th class="descriptionColumn"&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/system.windows.media.planeprojection.centerofrotationx(v=vs.95).aspx"&gt;CenterOfRotationX&lt;/a&gt;&lt;/td&gt;&lt;td&gt;获取或设置所旋转对象的旋转中心 X 坐标。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/system.windows.media.planeprojection.centerofrotationy(v=vs.95).aspx"&gt;CenterOfRotationY&lt;/a&gt;&lt;/td&gt;&lt;td&gt;获取或设置所旋转对象的旋转中心 Y 坐标。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/system.windows.media.planeprojection.centerofrotationz(v=vs.95).aspx"&gt;CenterOfRotationZ&lt;/a&gt;&lt;/td&gt;&lt;td&gt;获取或设置所旋转对象的旋转中心 Z 坐标。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/system.windows.dependencyobject.dispatcher(v=vs.95).aspx"&gt;Dispatcher&lt;/a&gt;&lt;/td&gt;&lt;td&gt;获取与此对象关联的&amp;nbsp;&lt;a href="http://msdn.microsoft.com/zh-cn/library/system.windows.threading.dispatcher(v=vs.95).aspx"&gt;Dispatcher&lt;/a&gt;。&amp;nbsp;（继承自&amp;nbsp;&lt;a href="http://msdn.microsoft.com/zh-cn/library/system.windows.dependencyobject(v=vs.95).aspx"&gt;DependencyObject&lt;/a&gt;。）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/system.windows.media.planeprojection.globaloffsetx(v=vs.95).aspx"&gt;GlobalOffsetX&lt;/a&gt;&lt;/td&gt;&lt;td&gt;获取或设置沿屏幕的 X 轴平移对象的距离。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/system.windows.media.planeprojection.globaloffsety(v=vs.95).aspx"&gt;GlobalOffsetY&lt;/a&gt;&lt;/td&gt;&lt;td&gt;获取或设置沿屏幕的 Y 轴平移对象的距离。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/system.windows.media.planeprojection.globaloffsetz(v=vs.95).aspx"&gt;GlobalOffsetZ&lt;/a&gt;&lt;/td&gt;&lt;td&gt;获取或设置沿屏幕的 Z 轴平移对象的距离。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/system.windows.media.planeprojection.localoffsetx(v=vs.95).aspx"&gt;LocalOffsetX&lt;/a&gt;&lt;/td&gt;&lt;td&gt;获取或设置沿对象平面的 X 轴平移对象的距离。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/system.windows.media.planeprojection.localoffsety(v=vs.95).aspx"&gt;LocalOffsetY&lt;/a&gt;&lt;/td&gt;&lt;td&gt;获取或设置沿对象平面的 Y 轴平移对象的距离。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/system.windows.media.planeprojection.localoffsetz(v=vs.95).aspx"&gt;LocalOffsetZ&lt;/a&gt;&lt;/td&gt;&lt;td&gt;获取或设置沿对象平面的 Z 轴平移对象的距离。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/system.windows.media.planeprojection.projectionmatrix(v=vs.95).aspx"&gt;ProjectionMatrix&lt;/a&gt;&lt;/td&gt;&lt;td&gt;获取&amp;nbsp;&lt;a href="http://msdn.microsoft.com/zh-cn/library/system.windows.media.planeprojection(v=vs.95).aspx"&gt;PlaneProjection&lt;/a&gt;&amp;nbsp;的投影矩阵。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/system.windows.media.planeprojection.rotationx(v=vs.95).aspx"&gt;RotationX&lt;/a&gt;&lt;/td&gt;&lt;td&gt;获取或设置围绕旋转的 X 轴旋转对象的角度。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/system.windows.media.planeprojection.rotationy(v=vs.95).aspx"&gt;RotationY&lt;/a&gt;&lt;/td&gt;&lt;td&gt;获取或设置围绕旋转的 Y 轴旋转对象的角度。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/system.windows.media.planeprojection.rotationz(v=vs.95).aspx"&gt;RotationZ&lt;/a&gt;&lt;/td&gt;&lt;td&gt;获取或设置围绕旋转的 Z 轴旋转对象的角度。&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;使用PlaneProjection 还可以实现更炫的移动三维效果：&lt;br /&gt;&lt;a href="http://samples.msdn.microsoft.com/Silverlight/SampleBrowser/index.htm#/?sref=AnimatedPerspective"&gt;http://samples.msdn.microsoft.com/Silverlight/SampleBrowser/index.htm#/?sref=AnimatedPerspective&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/08shiyan/aggbug/2390502.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/08shiyan/archive/2012/03/11/2390502.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/08shiyan/archive/2012/03/10/2389683.html</id><title type="text">XNA中的图形特效与文字显示  [MSDN资料]</title><summary type="text">图形特效与文字显示摘要使用 XNA Framework 设计游戏程序的时候可以利用 SpriteBatch 类别提供的功能显示游戏的内容供用户检视，SpriteBatch 类别提供了丰富的功能协助游戏程序绘制图画和文字，包括对所输出的图画和文字加入特殊的效果，例如放大/缩小、旋转、设定透明度、水平/垂直翻转、以及图层深度等游戏程序常常需要表现的效果。在这一篇文件中，我们将会为大家介绍利用 SpriteBatch 类别为游戏程序加上特殊效果的多种做法。认识 SpriteBatch 类别XNA Framework 支持的 SpriteBatch 类别可以协助游戏程序输出 2 维的图片和文字，并提供</summary><published>2012-03-10T15:51:00Z</published><updated>2012-03-10T15:51:00Z</updated><author><name>誓言的爱</name><uri>http://www.cnblogs.com/08shiyan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/08shiyan/archive/2012/03/10/2389683.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/08shiyan/archive/2012/03/10/2389683.html"/><content type="html">&lt;p&gt;&lt;strong&gt;图形特效与文字显示&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;img title="" src="http://i.msdn.microsoft.com/ee904170.bullet_title(zh-tw,MSDN.10).gif" alt="" /&gt;&amp;nbsp;摘要&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;使用 XNA Framework 设计游戏程序的时候可以利用 SpriteBatch 类别提供的功能显示游戏的内容供用户检视，SpriteBatch 类别提供了丰富的功能协助游戏程序绘制图画和文字，包括对所输出的图画和文字加入特殊的效果，例如放大/缩小、旋转、设定透明度、水平/垂直翻转、以及图层深度等游戏程序常常需要表现的效果。在这一篇文件中，我们将会为大家介绍利用 SpriteBatch 类别为游戏程序加上特殊效果的多种做法。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;img title="" src="http://i.msdn.microsoft.com/ee904170.bullet_title(zh-tw,MSDN.10).gif" alt="" /&gt;&amp;nbsp;认识 SpriteBatch 类别&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;XNA Framework 支持的 SpriteBatch 类别可以协助游戏程序输出 2 维的图片和文字，并提供批次输出的功能，避免频繁地输出游戏的内容造成闪烁的现象。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;[提示]&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;虽然以 XNA 为基础的 3D 游戏输出 3 维的图形内容时不需要依靠 SpriteBatch 类别提供的功能，但是当 3D 游戏需要提供文字的功能选单供用户选择的时候，还是需要使用到 SpriteBatch 类别提供的文字输出功能。&lt;/p&gt;&lt;p&gt;表 1 所示为 SpriteBatch 类别常用的属性&lt;/p&gt;&lt;div&gt;表 1 ：SpriteBatch 类别常用的属性&lt;/div&gt;&lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top"&gt;属性名称&lt;/td&gt;&lt;td valign="top"&gt;说明&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;GraphicsDevice&lt;/td&gt;&lt;td valign="top"&gt;取得游戏程序所使用的 GraphicsDevic 类别的对象的属性。&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;表 2 所示为 SpriteBatch 类别常用的方法：&lt;/p&gt;&lt;div&gt;表 2 ：SpriteBatch 类别常用的方法&lt;/div&gt;&lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top"&gt;方法名称&lt;/td&gt;&lt;td valign="top"&gt;说明&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;Begin&lt;/td&gt;&lt;td valign="top"&gt;宣告批次绘图的动作开始。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;Draw&lt;/td&gt;&lt;td valign="top"&gt;绘制 2 维图案。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;DrawString&lt;/td&gt;&lt;td valign="top"&gt;绘制文字。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;End&lt;/td&gt;&lt;td valign="top"&gt;宣告批次绘图的动作结束，将从呼叫 Begin 方法之后绘制的所有内容输出到游戏窗口，并将 GraphicsDevice 的状态还原到呼叫 Begin 方法之前的状态。&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;SpriteBatch 类别的功能看似简单，但是负责绘制 2 维图案的 Draw 方法有高达7个不同的多载 (Overload) 版本，负责绘制文字的 DrawString 方法也有多达 6 个不同的多载版本，让游戏程序可以经由传入不同数量的参数，控制方法执行的结果，如果再加计列举型态的参数的内容值选择，就可以组合出各种繁复的变化，满足游戏程序就变更游戏程序内容的需求。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;img title="" src="http://i.msdn.microsoft.com/ee904170.bullet_title(zh-tw,MSDN.10).gif" alt="" /&gt;&amp;nbsp;SpriteBatch 类别与图形特效支持&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;SpriteBatch 类别支持绘制 2 维图案的 Draw 方法一共有以下 7 个不同的多载版本：&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;SpriteBatch.Draw(texture, destinationRectangle, color)&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;SpriteBatch.Draw(texture, destinationRectangle, sourceRectangle, color)&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;SpriteBatch.Draw(texture, destinationRectangle, sourceRectangle, color,&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;rotation, origin, effects, layerDepth)&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;SpriteBatch.Draw(texture, position, color)&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;SpriteBatch.Draw(texture, position, sourceRectangle, color)&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;SpriteBatch.Draw(texture, position, sourceRectangle, color, rotation,&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;origin, scale, effects, layerDepth)&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;SpriteBatch.Draw(texture, position, sourceRectangle, color, rotation,&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;origin, scale, effects, layerDepth)&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;其需要用到的参数请参考表3的详细说明：&lt;/p&gt;&lt;div&gt;表 3 ：SpriteBatch 类别的 Draw 方法需要使用的参数&lt;/div&gt;&lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top"&gt;参数名称&lt;/td&gt;&lt;td valign="top"&gt;说明&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;texture&lt;/td&gt;&lt;td valign="top"&gt;型态为 Texture2D 类别的参数，负责管理欲绘制的 2 维图案。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;destinationRectangle&lt;/td&gt;&lt;td valign="top"&gt;负责描述欲绘制在游戏窗口上的物体的矩形。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;color&lt;/td&gt;&lt;td valign="top"&gt;负责控制欲绘制的图形的色调的参数，传入 Color.White 表示不改变欲显示的物体的色调。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;sourceRectangle&lt;/td&gt;&lt;td valign="top"&gt;指定欲用来取用来源对象的矩形。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;scale&lt;/td&gt;&lt;td valign="top"&gt;图案放大/缩小的倍数。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;rotation&lt;/td&gt;&lt;td valign="top"&gt;旋转角度。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;origin&lt;/td&gt;&lt;td valign="top"&gt;旋转图形时所依据的圆心。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;effects&lt;/td&gt;&lt;td valign="top"&gt;设定成 SpriteEffects.FlipHorizontally 表示要水平翻转图案，设定成 SpriteEffects.FlipVertically 表示要垂直翻转图案。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;layerDepth&lt;/td&gt;&lt;td valign="top"&gt;图层深度。0 代表前景层，1 代表背景层，可以搭配呼叫 SpriteBatch 类别的 Begin 方法传入的 SpriteSortMode 参数控制是否要对欲绘制的内容依 layerDepth 的内容值排序。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;position&lt;/td&gt;&lt;td valign="top"&gt;指定欲绘制的图案的左上角点坐标。&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;光是靠 SpriteBatch 类别的 Draw 方法的众多参数，就能够创造繁复的游戏效果，例如透过 color 参数设定图案的色调和透明度，透过 rotation 参数指定旋转图案的角度，利用 origin 参数设定图案旋转的圆心坐标，利用 effects 参数水平翻转或垂直翻转图案，利用 scale 参数指定放大/缩小图案的倍数，或是利用 layerDepth 参数设定图案要显示在那一个图层。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/windowsphone/gg570013.aspx"&gt;http://msdn.microsoft.com/zh-cn/windowsphone/gg570013.aspx&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/08shiyan/aggbug/2389683.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/08shiyan/archive/2012/03/10/2389683.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/08shiyan/archive/2012/03/10/2389383.html</id><title type="text">生成Xnb文件[转]</title><summary type="text">好久没关注Xna了，刚刚上了Xna游戏世界得知AppHub发布了新示例，其中有关于XNB文件结构解析的示例，于是第一时间去浏览了下：Compiled (XNB) Content Format。有兴趣的朋友可以下载示例研究一下（是C++代码），另外里面有份关于XNB文件结构的文档比较好。参照文档，我用C#(4.0)写了个简单的纹理XNB文件的生成工具。其实就是个命令行工具，把一堆文件拖上去，会自动将图像文件编译到相同目录下。编译后的文件放到游戏的Content目录中，然后Content.Load&lt;Texture2D&gt;就能加载到Texture2D变量中用于绘制。1staticvoidM</summary><published>2012-03-10T10:55:00Z</published><updated>2012-03-10T10:55:00Z</updated><author><name>誓言的爱</name><uri>http://www.cnblogs.com/08shiyan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/08shiyan/archive/2012/03/10/2389383.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/08shiyan/archive/2012/03/10/2389383.html"/><content type="html">&lt;p&gt;好久没关注Xna了，刚刚上了&lt;a title="Xna游戏世界" href="http://xnaer.com/"&gt;Xna游戏世界&lt;/a&gt;&amp;nbsp;得知AppHub发布了新示例，其中有关于XNB文件结构解析的示例，于是第一时间去浏览了下：&lt;a title="Compiled (XNB) Content Format" href="http://create.msdn.com/zh-CN/sample/xnb_format"&gt;Compiled (XNB) Content Format&lt;/a&gt;&amp;nbsp;。有兴趣的朋友可以下载示例研究一下（是C++代码），另外里面有份关于XNB文件结构的文档比较好。&lt;/p&gt;&lt;p&gt;参照文档，我用C#(4.0)写了个简单的纹理XNB文件的生成工具。其实就是个命令行工具，把一堆文件拖上去，会自动将图像文件编译到相同目录下。编译后的文件放到游戏的Content目录中，然后Content.Load&amp;lt;Texture2D&amp;gt;就能加载到Texture2D变量中用于绘制。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;static&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;Main(&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;[]&amp;nbsp;args)&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;2&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;3&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;foreach&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;&amp;nbsp;fileName&amp;nbsp;&lt;/span&gt;&lt;span&gt;in&lt;/span&gt;&lt;span&gt;&amp;nbsp;args)&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;4&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;5&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(File.Exists(fileName))&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;6&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ImageToXnb(fileName);&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;7&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;8&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.ReadLine();&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;9&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;static&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;ImageToXnb(&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;&amp;nbsp;fileName)&lt;br /&gt;&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;try&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Bitmap&amp;nbsp;image&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;Bitmap.FromFile(fileName)&amp;nbsp;&lt;/span&gt;&lt;span&gt;as&lt;/span&gt;&lt;span&gt;&amp;nbsp;Bitmap;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(image&amp;nbsp;&lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;获取图像的数组。&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&amp;nbsp;w&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;image.Width;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&amp;nbsp;h&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;image.Height;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&amp;nbsp;s&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;&amp;nbsp;w&amp;nbsp;&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;&amp;nbsp;h;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BitmapData&amp;nbsp;bmpData&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;image.LockBits(&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;Rectangle(&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;,&amp;nbsp;w,&amp;nbsp;h),&amp;nbsp;ImageLockMode.ReadOnly,&amp;nbsp;PixelFormat.Format32bppArgb);&lt;br /&gt;&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;byte&lt;/span&gt;&lt;span&gt;[]&amp;nbsp;bmpBytes&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;byte&lt;/span&gt;&lt;span&gt;[s];&lt;br /&gt;&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;unsafe&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;byte&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;&amp;nbsp;data&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&lt;/span&gt;&lt;span&gt;byte&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;)(bmpData.Scan0.ToPointer());&lt;br /&gt;&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;for&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;w&amp;nbsp;&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;&amp;nbsp;h;&amp;nbsp;i&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bmpBytes[&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;&amp;nbsp;i]&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;data[&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;];&lt;br /&gt;&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bmpBytes[&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;]&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;data[&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;];&lt;br /&gt;&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bmpBytes[&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;]&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;data[&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;&amp;nbsp;i];&lt;br /&gt;&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bmpBytes[&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;]&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;data[&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;];&lt;br /&gt;&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;image.UnlockBits(bmpData);&lt;br /&gt;&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;开始写入xnb数据。&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;byte&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;bytes;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;&amp;nbsp;xnbFile&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;Path.Combine(Path.GetDirectoryName(fileName),&amp;nbsp;Path.GetFileNameWithoutExtension(fileName)&amp;nbsp;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;.xnb&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FileStream&amp;nbsp;stream&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;FileStream(xnbFile,&amp;nbsp;FileMode.Create,&amp;nbsp;FileAccess.Write);&lt;br /&gt;&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytes&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;List&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;byte&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;();&lt;br /&gt;&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytes.AddRange(Encoding.Default.GetBytes(&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;XNB&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;));&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;文件头标识"XNB"&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytes.AddRange(Encoding.Default.GetBytes(&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;w&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;平台标识：w&amp;nbsp;-&amp;nbsp;Window&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytes.Add((&lt;/span&gt;&lt;span&gt;byte&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;5&amp;nbsp;-&amp;nbsp;Xna4.0&lt;br /&gt;&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;写入当前xnb文件需要的Type&amp;nbsp;Reader。Texture2D对应的是Texture2DReader。&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytes.Add((&lt;/span&gt;&lt;span&gt;byte&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;标记位：0x01&amp;nbsp;-&amp;nbsp;是否HiDef模式；0x80&amp;nbsp;-&amp;nbsp;是否压缩。&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytes.Add((&lt;/span&gt;&lt;span&gt;byte&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;Type&amp;nbsp;Reader的数量。&lt;br /&gt;&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;写入Type&amp;nbsp;Reader的全称。&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;&amp;nbsp;reader&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;Microsoft.Xna.Framework.Content.Texture2DReader,&amp;nbsp;Microsoft.Xna.Framework.Graphics,&amp;nbsp;Version=4.0.0.0,&amp;nbsp;Culture=neutral,&amp;nbsp;PublicKeyToken=842cf8be1de50553&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytes.Add((&lt;/span&gt;&lt;span&gt;byte&lt;/span&gt;&lt;span&gt;)reader.Length);&lt;br /&gt;&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytes.Add((&lt;/span&gt;&lt;span&gt;byte&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytes.AddRange(Encoding.Default.GetBytes(reader));&lt;br /&gt;&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytes.Add((&lt;/span&gt;&lt;span&gt;byte&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytes.AddRange(BitConverter.GetBytes(&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;));&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;Type&amp;nbsp;Reader&amp;nbsp;的版本。&lt;br /&gt;&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;写入xnb文件的内容。&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytes.Add((&lt;/span&gt;&lt;span&gt;byte&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;内容的数量。&lt;br /&gt;&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;写入内容，此处为Texture2D。&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytes.AddRange(BitConverter.GetBytes(&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;));&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;Surface&amp;nbsp;format-此处为Color。&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytes.AddRange(BitConverter.GetBytes((&lt;/span&gt;&lt;span&gt;uint&lt;/span&gt;&lt;span&gt;)w));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;宽和高。&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytes.AddRange(BitConverter.GetBytes((&lt;/span&gt;&lt;span&gt;uint&lt;/span&gt;&lt;span&gt;)h));&lt;br /&gt;&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytes.AddRange(BitConverter.GetBytes((&lt;/span&gt;&lt;span&gt;uint&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;Mip&amp;nbsp;数量。&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytes.AddRange(BitConverter.GetBytes((&lt;/span&gt;&lt;span&gt;uint&lt;/span&gt;&lt;span&gt;)(s)));&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;数据大小。&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytes.AddRange(bmpBytes);&lt;br /&gt;&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;计算文件大小，插入指定位置。实际上在那个标志位后面紧跟着就是&amp;nbsp;uint&amp;nbsp;类型的文件大小。&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&amp;nbsp;size&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;bytes.Count&amp;nbsp;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytes.InsertRange(&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;,&amp;nbsp;BitConverter.GetBytes(size));&lt;br /&gt;&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;写入文件。&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stream.Write(bytes.ToArray(),&amp;nbsp;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;,&amp;nbsp;bytes.Count);&lt;br /&gt;&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stream.Close();&lt;br /&gt;&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;文件&amp;nbsp;{0}&amp;nbsp;成功编译成&amp;nbsp;xnb&amp;nbsp;文件！&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;,&amp;nbsp;fileName);&lt;br /&gt;&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;catch&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;文件&amp;nbsp;{0}&amp;nbsp;不是有效的图像文件，编译失败！&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;,&amp;nbsp;fileName);&lt;br /&gt;&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;p&gt;这里有几点说明下：&lt;/p&gt;&lt;p&gt;1、代码用到不安全代码，要在项目属性中把&amp;ldquo;允许不安全代码&amp;rdquo;勾上。&lt;/p&gt;&lt;p&gt;2、Texture2DReader类型的全称是从已生成的XNB文件中复制过来的，我在对象浏览器中都没找到这个类，有人能告诉我为什么吗？&lt;/p&gt;&lt;p&gt;3、因为文件中第7个Byte开始的Uint类型的数表示文件大小，所以我先把整个文件写到List&amp;lt;byte&amp;gt;中，然后将数组长度加上4作为文件大小插入到该位置，然后在将整个List一起保存。（事实上开始的时候我把文件大小都设为0，游戏一样可以正常加载）&lt;/p&gt;&lt;p&gt;4、如果标记位指定文件为压缩的，那么文件大小后面还需指定解压后的文件大小，因为对压缩不甚了解，所以直接跳过了。&lt;/p&gt;&lt;p&gt;5、这里设置纹理的Surface&amp;nbsp;format为Color，这种格式最占空间了，拿一张约900kb的jpg图像编译后达3M多。所以要将本程序实用化，可以研究下其他的格式。&lt;/p&gt;&lt;p&gt;结束，睡觉zzzzz~&lt;img src="http://www.cnblogs.com/Emoticons/QQ/09.gif" alt="" /&gt;&lt;br /&gt;&lt;br /&gt;转自：&lt;a href="http://www.cnblogs.com/huobilie/archive/2011/07/20/2112244.html"&gt;http://www.cnblogs.com/huobilie/archive/2011/07/20/2112244.html&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/08shiyan/aggbug/2389383.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/08shiyan/archive/2012/03/10/2389383.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/08shiyan/archive/2012/03/10/2389366.html</id><title type="text">BackgroundTransferRequest Class</title><summary type="text">刚刚用BackgroundTransferRequest 做了一个后台下载文件的demo[WP7]，代码写完了运行时报了一个ArgumentException（MSDN给出的说明The path must end with a file name.），但是我写的代码没有问题的啊、确实一个合法的文件名。一丝不解中，再抬头一个Remarks:To help isolate the files to which the background transfer service has access, all transfers must be downloaded to a file within t</summary><published>2012-03-10T10:25:00Z</published><updated>2012-03-10T10:25:00Z</updated><author><name>誓言的爱</name><uri>http://www.cnblogs.com/08shiyan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/08shiyan/archive/2012/03/10/2389366.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/08shiyan/archive/2012/03/10/2389366.html"/><content type="html">&lt;p&gt;刚刚用&amp;nbsp;BackgroundTransferRequest 做了一个后台下载文件的demo[WP7]，代码写完了运行时报了一个&lt;span&gt;ArgumentException（MSDN给出的说明&amp;nbsp;&lt;span&gt;The path must end with a file name.&lt;/span&gt;），但是我写的代码没有问题的啊、确实一个合法的文件名。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="line-height: normal;"&gt;一丝不解中，再抬头一个Remarks:&lt;br /&gt;&lt;span&gt;To help isolate the files to which the background transfer service has access, all transfers must be downloaded to a file within the&amp;nbsp;&lt;/span&gt;&lt;em&gt;&lt;strong&gt;&lt;span class="input"&gt;\shared\transfers&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;span&gt;&amp;nbsp;directory in the application&amp;rsquo;s isolated storage. You can add additional directories under this directory, but attempting to set a URI that is outside of the transfer directory will throw an exception.&lt;br /&gt;&lt;br /&gt;很郁闷的独立存储，安全性确实高了，不过有时确让程序员很郁闷，幸好的是微软的文档做的很棒，很多信息还是可以在msdn上找到的。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BackgroundTransferRequest Class 链接：&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/hh203110(v=vs.92).aspx"&gt;http://msdn.microsoft.com/en-us/library/hh203110(v=vs.92).aspx&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/08shiyan/aggbug/2389366.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/08shiyan/archive/2012/03/10/2389366.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
