﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-还有多少青春可以挥霍</title><link>http://www.cnblogs.com/kkun/</link><description>这刻在望著父亲笑容时,竟不知不觉的无言</description><language>zh-cn</language><lastBuildDate>Sun, 07 Sep 2008 22:19:23 GMT</lastBuildDate><pubDate>Sun, 07 Sep 2008 22:19:23 GMT</pubDate><ttl>60</ttl><item><title>老生常谈,根据表结构生成代码</title><link>http://www.cnblogs.com/kkun/archive/2008/08/27/1277903.html</link><dc:creator>kkun</dc:creator><author>kkun</author><pubDate>Wed, 27 Aug 2008 09:39:00 GMT</pubDate><guid>http://www.cnblogs.com/kkun/archive/2008/08/27/1277903.html</guid><wfw:comment>http://www.cnblogs.com/kkun/comments/1277903.html</wfw:comment><comments>http://www.cnblogs.com/kkun/archive/2008/08/27/1277903.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cnblogs.com/kkun/comments/commentRss/1277903.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/kkun/services/trackbacks/1277903.html</trackback:ping><description><![CDATA[<strong>[起因]<br />
</strong>&nbsp;&nbsp; 大多数朋友应该都有这样的经历,在工作中,经常从"自己的老系统"里找代码,因为功能差不多,页面差不多,如果有现成的修改下,工作量肯定会小很多<br />
新的功能一般开发完成后也都会留有备份,这时候,哪些功能自己曾经写过,哪些没有写过,哪些部分可以重用,心里非常清楚,这样在用的时候找就可以了,或许这也是经验的组成部分,这种经历不多阐述了,相信各位都能体会到<br />
<br />
&nbsp;&nbsp; 然而,虽说COPY非常轻松,但是人脑毕竟不是电脑,有时候突然发现移动硬盘坏了,或者光盘读不出来了,再或者找不到U盘了,就是说由于某种原因"经验"丢了,怎么办?呵呵,天无绝人之路,我还记得关键字呢(此功能自己未实现过,但了解从哪里可以查阅到),百度一下,谷歌一下,问题还是解决了.<br />
<br />
&nbsp;&nbsp; 最终有一天出现特殊情况了,如,网速奇慢,或者搬家后暂时无网络,再或者公司禁网,再或者网站更新或者关闭,等等一系列原因导致自己不得不重新写这些代码,真不走运,花费一些时间重新编写,重新测试,重新发现那些非常熟悉的但不小心忽略了的BUG,再修改,再编译,再测试,最终问题解决.但是花费了一些时间和精力,同时兴趣值减少10%<br />
<br />
&nbsp;&nbsp; 鉴于上述情况,遂决定开发这么一款小软件,使得可以自动生成自己经常需要用的代码,我非常相信各位在较短的时间内都可以开发出来,因为它确实灰常简单,但是比较"麻烦",以致于我每次写重复代码的时候想到要写这么一个工具出来,然而每次又都因为它的局限性,应用范围和其它原因放弃掉了,一次一次的想,一次一次的放弃,最终决定无论什么原因都坚持下去,把它写出来,哪怕只是用一次,坚决让电脑去做它能做到的事情,解放我出来,这个小软件诞生了.甚至连名字都没有想好<br />
<br />
<strong>[介绍]</strong><br />
&nbsp;&nbsp;&nbsp; 感觉有必要说一下设计思路及实现过程<br />
思路<br />
<span style="text-decoration: underline;">基本思路</span>就是,连接数据库---&gt;从库中获取所有表列表---&gt;查询得到表字段信息<br />
<p>提供<span style="text-decoration: underline;">代码模板</span>,使用固定标签名称---&gt;使用上述得到的表字段信息进行替换标签的工作---&gt;将替换后的字符串以.CS为扩展名保存到本地</p>
<p>其中,代码模板可有限维护,所谓有限维护是指不大可能完全变样,因为替换的就那么几个系统变量,如表名,字段名,当前时间等等,如果整个模板都变了的话,在新模板时我不清楚是否还需要这些系统变量?如果不需要!@#$%^&amp; <br />
</p>
<br />
<strong>[实现过程]</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp; 在获取库中所有表列表时发现自己不会写,SQL知识非常弱,不过最终得到了解答,实在对那些系统表里的字段不了解,仔细学习应该还能提到更多信息<br />
[code=SQL]SELECT NAME FROM DBO.SYSOBJECTS WHERE OBJECTPROPERTY(ID, N'ISUSERTABLE') = 1 ORDER BY [NAME][/code]<br />
上句是取表列表<br />
<br />
查询表的字段信息同样从网上搜出来的,这一句是取字段信息,原文见下边<br />
<a href="http://www.cnblogs.com/mingyeh/archive/2008/06/17/1223516.html">http://www.cnblogs.com/mingyeh/archive/2008/06/17/1223516.html</a><br />
代码如下<br />
<div class="cnblogs_code"><img id="Code_Closed_Image_172934" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_172934').style.display='none'; document.getElementById('Code_Open_Image_172934').style.display='inline'; document.getElementById('Code_Open_Text_172934').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" height="16"><img id="Code_Open_Image_172934" style="display: none;" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_172934').style.display='none'; getElementById('Code_Closed_Image_172934').style.display='inline'; getElementById('Code_Closed_Text_172934').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" height="16"><span id="Code_Closed_Text_172934" class="cnblogs_code_Collapse">Code</span><span id="Code_Open_Text_172934" style="display: none;"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">string</span><span style="color: #000000;">&nbsp;sql&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.Format(</span><span style="color: #800000;">@"</span><span style="color: #800000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;syscolumns.colid,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sysobjects.name&nbsp;AS&nbsp;[TableName],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;syscolumns.name&nbsp;AS&nbsp;[ColumnName],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;systypes.name&nbsp;AS&nbsp;[DataType],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;syscolumns.length&nbsp;AS&nbsp;[DataLength],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sys.extended_properties.[value]&nbsp;AS&nbsp;[Description],&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;syscomments.text&nbsp;AS&nbsp;[DefaultValue],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;syscolumns.isnullable&nbsp;AS&nbsp;[NullAble]&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;syscolumns&nbsp;INNER&nbsp;JOIN&nbsp;systypes<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ON&nbsp;syscolumns.xtype&nbsp;=&nbsp;systypes.xtype<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LEFT&nbsp;JOIN&nbsp;sysobjects&nbsp;ON&nbsp;syscolumns.id&nbsp;=&nbsp;sysobjects.id<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LEFT&nbsp;OUTER&nbsp;JOIN&nbsp;sys.extended_properties&nbsp;ON<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&nbsp;sys.extended_properties.minor_id&nbsp;=&nbsp;syscolumns.colid<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;sys.extended_properties.major_id&nbsp;=&nbsp;syscolumns.id)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LEFT&nbsp;OUTER&nbsp;JOIN&nbsp;syscomments&nbsp;ON&nbsp;syscolumns.cdefault&nbsp;=&nbsp;syscomments.id<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;syscolumns.id&nbsp;IN<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(SELECT&nbsp;id&nbsp;FROM&nbsp;SYSOBJECTS&nbsp;WHERE&nbsp;xtype&nbsp;=&nbsp;'U'&nbsp;AND&nbsp;NAME&nbsp;=&nbsp;'{0}')&nbsp;AND&nbsp;(systypes.name&nbsp;&lt;&gt;&nbsp;'sysname')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ORDER&nbsp;BY&nbsp;syscolumns.colid</span><span style="color: #800000;">"</span><span style="color: #000000;">,&nbsp;tbName);</span></span></div>
<br />
查询表的主键,刚还在坛子里看见有人问了,还回记住了,<br />
<div class="cnblogs_code"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">sp_pkeys&nbsp;表名</span></div>
<br />
这个是取表主键,这些都得到了,相信下边的工作更没有什么难度了,无非是取模板数据,替换固定标签之类,不再多说,最后提供源码下载<br />
<br />
<p><strong>[</strong><strong>源码]</strong><br />
</p>
源码<br />
<a href="http://test.tstring.com.cn/code/src.rar">http://test.tstring.com.cn/code/src.rar</a><br />
<br />
可执行文件<br />
<a href="http://test.tstring.com.cn/code/release.rar">http://test.tstring.com.cn/code/release.rar</a><br />
<br />
界面预览<br />
<a href="http://test.tstring.com.cn/code/sql.jpg">http://test.tstring.com.cn/code/sql.jpg</a><br />
<br />
小灰SVN<br />
<a href="svn://svnhost.cn/CodeCreate">svn://svnhost.cn/CodeCreate</a><br />
<a href="http://www.svnhost.cn/Project/Detail-202.shtml">http://www.svnhost.cn/Project/Detail-202.shtml</a><br />
<br />
在下的个人主页<br />
<a href="http://www.tstring.com.cn/">http://www.tstring.com.cn</a><br />
<br />
生成代码的方法除了模板+标签外,还有其它解决方案吗?有的,只是不够灵活而已,感兴趣的朋友可以搜索<strong>System.CodeDom</strong>相关资料<img src ="http://www.cnblogs.com/kkun/aggbug/1277903.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42134/" target="_blank">[新闻]JavaScript将成Silverlight的最大对手?</a>]]></description></item><item><title>开源[代码自动生成小软件],测试中,广征建议</title><link>http://www.cnblogs.com/kkun/archive/2008/05/11/1192115.html</link><dc:creator>kkun</dc:creator><author>kkun</author><pubDate>Sun, 11 May 2008 04:32:00 GMT</pubDate><guid>http://www.cnblogs.com/kkun/archive/2008/05/11/1192115.html</guid><wfw:comment>http://www.cnblogs.com/kkun/comments/1192115.html</wfw:comment><comments>http://www.cnblogs.com/kkun/archive/2008/05/11/1192115.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/kkun/comments/commentRss/1192115.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/kkun/services/trackbacks/1192115.html</trackback:ping><description><![CDATA[<strong>开源[代码自动生成小软件],测试中,广征建议</strong><br />
<br />
下载地址:<br />
<a href="svn://svnhost.cn/CodeCreate" style="font-weight: bold; font-family: 'Trebuchet MS';">svn://svnhost.cn/CodeCreate</a><br />
<br />
<em>顺便请教几个问题,</em><br />
<br />
<strong>问题1</strong>,现在生成代码使用的模板+标签替换 <br />
是否有更好的解决方法? <br />
<br />
<strong>问题2</strong>,如果需要创建自动SQL的实体,如何实现?使用视图还是表变量,临时表等方法?或者其它办法? <br />
<br />
<strong>问题3</strong>,每个实体都有对应的实体集合类, <br />
是否可以用泛型来优化?如何优化? <br />
<br />
<strong>问题4</strong>,BUSINESS逻辑层全部使用静态方法有什么优点和缺点? <br />
<br />
<strong>问题5</strong>,如何完美的实现从SqlDbType&nbsp;到&nbsp;System.Type的互换, <br />
<br />
<strong>问题6</strong>,请看完代码后,找出其中设计不足的地方,最好能够给出修改建议 <br />
<img src ="http://www.cnblogs.com/kkun/aggbug/1192115.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42133/" target="_blank">[新闻]没有谷歌就活不下去的四个网站</a>]]></description></item><item><title>写了一个比上次还要小的软件，类似采集</title><link>http://www.cnblogs.com/kkun/archive/2008/03/25/1120785.html</link><dc:creator>kkun</dc:creator><author>kkun</author><pubDate>Tue, 25 Mar 2008 02:03:00 GMT</pubDate><guid>http://www.cnblogs.com/kkun/archive/2008/03/25/1120785.html</guid><wfw:comment>http://www.cnblogs.com/kkun/comments/1120785.html</wfw:comment><comments>http://www.cnblogs.com/kkun/archive/2008/03/25/1120785.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/kkun/comments/commentRss/1120785.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/kkun/services/trackbacks/1120785.html</trackback:ping><description><![CDATA[<strong>软件下载</strong><br />
<a href="/Files/kkun/SpecialEnglish.rar">/Files/kkun/SpecialEnglish.rar</a><br />
<a href="/Files/kkun/SpecialEnglishSrc.rar">/Files/kkun/SpecialEnglishSrc.rar</a><br />
<br />
<strong>简单介绍<br />
<br />
</strong>输入两个日期，依次点击第一个按钮&#8221;<strong>准备</strong>&#8220;，然后再点击第二个按钮&#8220;<strong>分析</strong>&#8221;，然后就开始下载了，<br />
如果中间发生什么异常的话，可以点击第三个按钮&#8220;继续&#8221;，<strong>注意顺序</strong>，没做太多的异常处理。<br />
自动下载<a href="www.unsv.com">www.unsv.com</a>上的英语资料和MP3文件，如果你有该网站高级会员，那太绑了，登录一下，<br />
设置从2001-6-1开始到今天为止，则可以下载所有的文件了。当然么有高级会员的话，只能下载最近七天内的资料。<br />
就学习而言，足够了。就这些。。。代码也很乱，权当记录学习历程了。<br />
<strong><br />
界面预览</strong><br />
<br />
<img src="http://www.cnblogs.com/images/cnblogs_com/kkun/SpecialEnglish1.jpg" alt="" border="0" /><br />
<br />
<strong>作者语</strong><br />
本着科技服务生活的想法，本着以解决实际问题为原动力的初衷，开发了上面这个东东。<br />
我也想开发一些华丽的宏大的软件，千人使用万人敬仰，可是只是想想罢了。<br />
在想法不成熟以前，没有足够的把握坚持下去之前，只好写些个自娱自乐的东东了。<br />
欢迎您与我探讨技术相关，创业相关的话题。Msn:<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#104;&#101;&#98;&#107;&#107;&#117;&#110;&#64;&#104;&#111;&#116;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;">hebkkun@hotmail.com</a><br />
<br />
突然在想？这个东西是否可以改成一只蜘蛛呢？
<img src ="http://www.cnblogs.com/kkun/aggbug/1120785.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42132/" target="_blank">[新闻]Google 10周岁生日</a>]]></description></item><item><title>第一次翻译一个简单的教程,Your First Game: Microsoft XNA Game Studio in 2D</title><link>http://www.cnblogs.com/kkun/archive/2008/02/25/1080999.html</link><dc:creator>kkun</dc:creator><author>kkun</author><pubDate>Mon, 25 Feb 2008 09:00:00 GMT</pubDate><guid>http://www.cnblogs.com/kkun/archive/2008/02/25/1080999.html</guid><wfw:comment>http://www.cnblogs.com/kkun/comments/1080999.html</wfw:comment><comments>http://www.cnblogs.com/kkun/archive/2008/02/25/1080999.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/kkun/comments/commentRss/1080999.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/kkun/services/trackbacks/1080999.html</trackback:ping><description><![CDATA[This article leads you through the steps necessary to create a simple sprite-based game by using XNA Game Studio. <br />
The Complete Sample<br />
这篇文章介绍了如何使用XNA工具,通过以下几步创建一个简单的游戏,<br />
<br />
Step 1: Install Your Software<br />
Step 2: Create a New Project<br />
Step 3: View the Code<br />
Step 4: Add a Sprite<br />
Step 5: Make the Sprite Move and Bounce<br />
Step 6: Explore!<br />
1,安装软件,<br />
2,创建一个项目<br />
3,查看生成的代码<br />
4,添加精灵<br />
5,让精灵动起来,遇到边界自动反弹<br />
6,运行游戏<br />
<br />
The Complete Sample<br />
The code in this tutorial illustrates the technique described in the text. A complete code sample for this tutorial is available for you to download, including full source code and any additional supporting files required by the sample. <br />
完整的例子<br />
文章中的代码实例讲解了这些技术,你可以下载到完整的代码,包括例子中用到的所有文件,<br />
<a target="_blank" href="http://go.microsoft.com/fwlink/?LinkId=103991&amp;clcid=0x409">Download MyFirstGame_Tutorial_Sample.zip.</a><br />
<br />
Step 1: Install Your Software<br />
Before you begin, make sure that you have installed all the necessary software, including a supported version of Microsoft Visual Studio tools and XNA Game Studio. See <a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/Required_SW.htm">Required Software</a> for a list of required programs. <br />
第一步,安装软件<br />
开始之前,请确认你已经安装了所有必需的软件,包括Micorsoft Visual Studio和XNA Game Studio受支持的版本,点击此处查看要求的软件列表<br />
<br />
Step 2: Create a New Project From the <strong>Start </strong>menu, click <strong>All Programs</strong>, then the <strong>Microsoft XNA Game Studio 2.0</strong> folder, and finally click your supported version of Microsoft Visual Studio tools. When the Start Page appears, click the<strong> File</strong> menu, and then click <strong>New Project.</strong> A dialog box will appear with a tree list on the left pane, marked Project Types. Select the <strong>XNA Game Studio 2.0</strong> tree node underneath the<strong> Visual C#</strong> node. A set of available projects will appear in the right pane.<br />
第二步,创建项目<br />
从开始菜单,点击所有程序,选择Microsoft XNA Game Studio 2.0,最后选择受支持的版本的Micorsoft Visual Studio,<br />
出现开始界面时,点击菜单中的文件,点击新项目,这时出现一个对话框,左侧是各种项目,选择C#节点下边的XNA Game Studio 2.0项目,一套可用的项目将会在对话框的右边列出,<br />
<br />
In the right pane of the dialog box that appears, choose <strong>Windows Game (2.0) </strong>and type a title for your project (such as "MyFirstGame") in the <strong>Name</strong> box. Type a path where you'd like to save your project in the <strong>Location</strong> box. Then click <strong>OK</strong>.After creating a new project, you'll be presented with the code view of your game.<br />
在右边的对话框中选择Windows Game (2.0),在项目名称栏中输入项目的标题(如"MyFirstGame"),在存储位置中输入项目保存的地址,点击确定.项目创建完毕后,你可以看到默认打开的代码页<br />
<br />
Step 3: View the Code<br />
Some of the hard work has already been done for you. If you build and run your game now, the <a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/GraphicsDeviceManager_Framework_Xna_Microsoft_T.htm">GraphicsDeviceManager</a> will handle setting up your screen size and rendering a blank screen. Your game will run and update all by itself. It's up to you to insert your own code to make the game more interesting.<br />
第三步,查看代码<br />
一些重复性的工作已经自动创建好了,此时如果你编译运行的话,GraphicsDeviceManager会设置你的屏幕的大小并沉浸一个空窗口,这个窗口将运行并自动更新,是插入你自己的代码的时候了,让它更有趣一些.<br />
<br />
Much of the code to start and run your game has already been written for you, and all have places for you to insert your code.<br />
运行它的代码大部分已经写好,并且都留出了添加你自己代码的地方,<br />
<br />
<ul>
    <li>The <a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/Initialize_Game_Framework_Xna_Microsoft_M.htm">Initialize</a> method is where you can initialize any assets that do not require a <a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/GraphicsDevice_Graphics_Framework_Xna_Microsoft_T.htm">GraphicsDevice</a> to be initialized. </li>
    <li>The <a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/LoadContent_Game_MXF_M.htm">LoadContent </a>method is where you load any game assets your game needs, such as models and textures. </li>
    <li>The <a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/UnloadContent_Game_MXF_M.htm">UnloadContent</a> method is where any game assets can be released. Generally, no extra code is required here, as assets will be released automatically when they are no longer needed. </li>
    <li>The <a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/Update_Game_Framework_Xna_Microsoft_M.htm">Update</a> loop is the best place to update your game logic: move objects around, take player input, decide the outcome of collisions between objects, and so on. </li>
    <li>The <a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/Draw_Game_Framework_Xna_Microsoft_M.htm">Draw</a> loop is the best place to render all of your objects and backgrounds on the screen. </li>
</ul>
<ul>
    <li>Initialize方法里,你可以初始化所有不需要GraphicsDevice的东东,</li>
    <li>LoadContent方法里,可以加载游戏中的资源,如模型和纹理等</li>
    <li>UnloadContent方法与LoadContent刚好相反,是释放这这些资源的地方,一般情况下,这里不需要额外的代码,如果这些资源长时间不使用的话会自动释放.</li>
    <li>Update循环方法是放置游戏逻辑的最好的地方,移动物体,接收玩家的输入,检测到两个物体碰撞时的输出等,</li>
    <li>Draw循环方法是渲染所有物体和背景到屏幕上的地方,</li>
</ul>
<br />
Step 4: Add a Sprite<br />
The next step is to add a graphic that can be drawn on the screen. Use a small graphics file, such as a small .bmp or .jpg file. Be creative—you can even make your own.<br />
第四步,添加精灵<br />
下一步将添加一个图片并输出到屏幕上,使用一个小图片文件,如.bmp,.jpg,你也可以自己制作一张<br />
<br />
<ul>
    <li>You can even skip ahead a bit and make a sprite that "hides" parts that should not be seen (such as edges or corners) so that it looks even better.</li>
    <li>你甚至可以忽略精灵的前景色,这样使精灵的一部分不可见,如边缘或边角部分,这样看上去更好看一些</li>
    <li>Once you have a graphic picked out on your computer, follow these steps.</li>
    <li>当你选择一张图片的时候,按照下边的步骤</li>
    <li>Make sure you can see the Solution Explorer for your project on the right side of the window. If you cannot see it, click the View menu, and then click Solution Explorer. When it appears, you will see files associated with your project in a tree structure. </li>
    <li>确认你现在可以看到项目右边的解决方案资源管理器,如果你看不到它,点击菜单中的查看,点击解决方案资源管理器,这时就会出现了,你可以在树型列表中看到这些已经声明过的文件</li>
    <li>Inside the tree, you will see a node named Content. Right-click this node, click Add, and then click Existing Item. Browse to your graphic. If you can't see any files, make sure you change the Files of type selection box to read Texture Files. Click the graphic file, then click Add. An entry for the graphic file will appear in Solution Explorer. </li>
    <li>在这个树型列表里,你可以看到一个叫做Content的节点,右键这个节点,点击添加,添加现有项,找到你的图片,如果你看不到文件,请确认对话框中的文件类型,选择你的图片文件,点击确定添加,图片文件将会出现在解决方案的列表中</li>
    <li>When you add a graphic file, it is automatically added to the XNA Framework Content Pipeline, which will allow you to quickly and easily load the graphic into your game.</li>
    <li>当你添加图片的时候,它会自动添加一个XNA Framework Content Piptline,这样你就可以快速方便的将图片加载到你的游戏中了,</li>
    <li>Click the entry for the graphic in the Solution Explorer. If you do not see the entry, ensure the Content node is expanded by clicking the small plus sign (+) to the left of the node, then click on the entry that appears underneath the Content node. </li>
    <li>In the Properties window below Solution Explorer, look for the "Asset Name" property. Note the name; you'll use it in your code to load the graphic so it can be displayed in your game. If the Properties window is not visible, press F4, or click the View menu, and then click Properties Window. </li>
    <li>在解决方案资源管理器中点击这张图片,如果你看不到它请确认Content节点是展开的,点击它左边的小加号(+)就可以,这时点击Content节点下边的这张图片,在解决方案资源管理器的下边有一个属性窗口,找到"Asset Name"属性,给它命名,然后就可以在程序加载它并在你的游戏里边显示了.如果你找不到属性窗口,按F4键,或者点击查看菜单,选择属性窗口,</li>
    <li>Now, you must write code that loads and displays the sprite on the screen. You can use the instructions in <a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/2DGraphicsHowTo_Draw_Sprite.htm">How To: Draw a Sprite</a>, or follow along here.</li>
    <li>好了,你现在必须写一些代码,加载这个精灵并让它显示在屏幕上,你可以查看"How To"中的Draw a Sprite,或者继续往下看</li>
</ul>
<br />
Back in the Code view of your game, find the <a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/LoadContent_Game_MXF_M.htm">LoadContent</a> method, and add the following lines in and above the method so it looks similar to this:<br />
回到游戏的代码页,找到LoadContent方法,添加代码如下所示<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000;">C#&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;This&nbsp;is&nbsp;a&nbsp;texture&nbsp;we&nbsp;can&nbsp;render.</span><span style="color: #008000;"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000;">Texture2D&nbsp;myTexture;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Set&nbsp;the&nbsp;coordinates&nbsp;to&nbsp;draw&nbsp;the&nbsp;sprite&nbsp;at.</span><span style="color: #008000;"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000;">Vector2&nbsp;spritePosition&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Vector2.Zero;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">override</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;LoadContent()<br />
<img id="Codehighlighter1_187_364_Open_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_187_364_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_187_364_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_187_364_Closed_Text').style.display='inline';" align="top"  alt="" /><img id="Codehighlighter1_187_364_Closed_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_187_364_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_187_364_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_187_364_Open_Text').style.display='inline';" align="top"  alt="" /></span><span id="Codehighlighter1_187_364_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_187_364_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Create&nbsp;a&nbsp;new&nbsp;SpriteBatch,&nbsp;which&nbsp;can&nbsp;be&nbsp;used&nbsp;to&nbsp;draw&nbsp;textures.</span><span style="color: #008000;"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;spriteBatch&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;SpriteBatch(GraphicsDevice);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;myTexture&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Content.Load</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Texture2D</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">(</span><span style="color: #800000;">"</span><span style="color: #800000;">mytexture</span><span style="color: #800000;">"</span><span style="color: #000000;">);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
<br />
<br />
<blockquote>Make sure the call to ContentManager.Load is using the "Asset Name" you saw in the Properties window in the previous step. <br />
This code will load and prepare your graphic to be drawn, and will reload your graphic if the graphics device is reset (such as in the case of the game window being resized).<br />
确认ContentManager.Load方法使用的参数是你上一步在"Asset Name"中命名的资源,这些代码将加载你的图片并准备画到屏幕上去,在你的图片设备重置(如当游戏窗口改变大小后)时会自动重新加载<br />
</blockquote><br />
Now, add code to the <a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/Draw_Game_Framework_Xna_Microsoft_M.htm">Draw</a> loop so it looks like this:<br />
在Draw循环中添加以下代码,<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000;">C#&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">override</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;Draw(GameTime&nbsp;gameTime)<br />
<img id="Codehighlighter1_53_304_Open_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_53_304_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_53_304_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_53_304_Closed_Text').style.display='inline';" align="top"  alt="" /><img id="Codehighlighter1_53_304_Closed_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_53_304_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_53_304_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_53_304_Open_Text').style.display='inline';" align="top"  alt="" /></span><span id="Codehighlighter1_53_304_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_53_304_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;graphics.GraphicsDevice.Clear(Color.CornflowerBlue);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Draw&nbsp;the&nbsp;sprite.</span><span style="color: #008000;"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;spriteBatch.Begin(SpriteBlendMode.AlphaBlend);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;spriteBatch.Draw(myTexture,&nbsp;spritePosition,&nbsp;Color.White);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;spriteBatch.End();<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">base</span><span style="color: #000000;">.Draw(gameTime);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
<br />
<br />
<blockquote>This code draws the sprite on the screen each frame.<br />
这段代码在屏幕上显示这个精灵,<br />
</blockquote><br />
<ul>
    <li>Build and run your game. The sprite appears. Now, it's time to give it some motion. </li>
    <li>编译运行你的游戏,这个精灵显示出来了,好了,现在是时候让它动起来了,</li>
</ul>
<br />
Step 5: Make the Sprite Move and Bounce Change the lines of code in and above the <a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/Update_Game_Framework_Xna_Microsoft_M.htm">Update</a> method to read this way:<br />
第五步,让精灵动起来并自动反弹,将代码切换到Update方法,添加以下函数,<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000;">C#&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Store&nbsp;some&nbsp;information&nbsp;about&nbsp;the&nbsp;sprite's&nbsp;motion.</span><span style="color: #008000;"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000;">Vector2&nbsp;spriteSpeed&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Vector2(&nbsp;</span><span style="color: #800080;">50.0f</span><span style="color: #000000;">,&nbsp;</span><span style="color: #800080;">50.0f</span><span style="color: #000000;">&nbsp;);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">override</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;Update(GameTime&nbsp;gameTime)<br />
<img id="Codehighlighter1_160_382_Open_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_160_382_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_160_382_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_160_382_Closed_Text').style.display='inline';" align="top"  alt="" /><img id="Codehighlighter1_160_382_Closed_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_160_382_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_160_382_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_160_382_Open_Text').style.display='inline';" align="top"  alt="" /></span><span id="Codehighlighter1_160_382_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_160_382_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Allows&nbsp;the&nbsp;game&nbsp;to&nbsp;exit</span><span style="color: #008000;"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(GamePad.GetState(PlayerIndex.One).Buttons.Back&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;ButtonState.Pressed)<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.Exit();<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Move&nbsp;the&nbsp;sprite&nbsp;around.</span><span style="color: #008000;"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;UpdateSprite(gameTime);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">base</span><span style="color: #000000;">.Update(gameTime);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;UpdateSprite(GameTime&nbsp;gameTime)<br />
<img id="Codehighlighter1_421_1215_Open_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_421_1215_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_421_1215_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_421_1215_Closed_Text').style.display='inline';" align="top"  alt="" /><img id="Codehighlighter1_421_1215_Closed_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_421_1215_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_421_1215_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_421_1215_Open_Text').style.display='inline';" align="top"  alt="" /></span><span id="Codehighlighter1_421_1215_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_421_1215_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Move&nbsp;the&nbsp;sprite&nbsp;by&nbsp;speed,&nbsp;scaled&nbsp;by&nbsp;elapsed&nbsp;time.</span><span style="color: #008000;"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;spritePosition&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;spriteSpeed&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">float</span><span style="color: #000000;">)gameTime.ElapsedGameTime.TotalSeconds;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;MaxX&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;graphics.GraphicsDevice.Viewport.Width&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;myTexture.Width;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;MinX&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">0</span><span style="color: #000000;">;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;MaxY&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;graphics.GraphicsDevice.Viewport.Height&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;myTexture.Height;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;MinY&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">0</span><span style="color: #000000;">;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Check&nbsp;for&nbsp;bounce.</span><span style="color: #008000;"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(spritePosition.X&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;MaxX)<br />
<img id="Codehighlighter1_810_879_Open_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_810_879_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_810_879_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_810_879_Closed_Text').style.display='inline';" align="top"  alt="" /><img id="Codehighlighter1_810_879_Closed_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_810_879_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_810_879_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_810_879_Open_Text').style.display='inline';" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_810_879_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_810_879_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spriteSpeed.X&nbsp;</span><span style="color: #000000;">*=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #800080;">1</span><span style="color: #000000;">;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spritePosition.X&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;MaxX;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(spritePosition.X&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;MinX)<br />
<img id="Codehighlighter1_923_992_Open_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_923_992_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_923_992_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_923_992_Closed_Text').style.display='inline';" align="top"  alt="" /><img id="Codehighlighter1_923_992_Closed_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_923_992_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_923_992_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_923_992_Open_Text').style.display='inline';" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_923_992_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_923_992_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spriteSpeed.X&nbsp;</span><span style="color: #000000;">*=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #800080;">1</span><span style="color: #000000;">;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spritePosition.X&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;MinX;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(spritePosition.Y&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;MaxY)<br />
<img id="Codehighlighter1_1031_1100_Open_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1031_1100_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_1031_1100_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_1031_1100_Closed_Text').style.display='inline';" align="top"  alt="" /><img id="Codehighlighter1_1031_1100_Closed_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1031_1100_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_1031_1100_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_1031_1100_Open_Text').style.display='inline';" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1031_1100_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1031_1100_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spriteSpeed.Y&nbsp;</span><span style="color: #000000;">*=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #800080;">1</span><span style="color: #000000;">;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spritePosition.Y&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;MaxY;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(spritePosition.Y&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;MinY)<br />
<img id="Codehighlighter1_1144_1213_Open_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1144_1213_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_1144_1213_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_1144_1213_Closed_Text').style.display='inline';" align="top"  alt="" /><img id="Codehighlighter1_1144_1213_Closed_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1144_1213_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_1144_1213_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_1144_1213_Open_Text').style.display='inline';" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1144_1213_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1144_1213_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spriteSpeed.Y&nbsp;</span><span style="color: #000000;">*=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #800080;">1</span><span style="color: #000000;">;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spritePosition.Y&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;MinY;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
<br />
<br />
This adds a little bit of logic that will move the sprite around each frame and cause the sprite to change direction if it hits the edges of the game window.<br />
这里添加了一些很小的逻辑判断,精灵在每侦中移动,并在碰到窗口的边缘时自动更改方向<br />
<br />
Step 6: Explore!<br />
From here, you can do just about anything. If you're ready to jump into a more complex example, including 3D graphics, input, and audio, see <a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/Going_Beyond.htm">Going Beyond: XNA Game Studio in 3D.</a> <br />
第六步,运行<br />
在这里,你基本没有什么工作要做了,如果你准备去看一些复杂些的例子,包括3D图形,输入和声音,可以看:XNA Game Studio in 3D. <br />
<br />
Here are some more ideas to extend this sample:<br />
这里有一些方法去扩展这个例子<br />
<br />
Experiment with the call to <a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/SpriteBatch_Graphics_Framework_Xna_Microsoft_T.htm">SpriteBatch</a>.<a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/Draw_SpriteBatch_Graphics_Framework_Xna_Microsoft_M_O.htm">Draw</a>. Change the Color parameter to tint the sprite. See <a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/2DGraphicsHowTo_Tint_Sprite.htm">How To: Tint a Sprite</a>. Add a second sprite, and use <a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/BoundingBox_Framework_Xna_Microsoft_T.htm">BoundingBox</a> objects to allow the sprites to collide with one another. (See <a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/Math_HowTo_DetectTwoObjectsColliding.htm">How To: Detect Whether Two Models Collide.</a>) <br />
试着用SpriteBatch.Draw方法,改变精灵的颜色参数,参考How To: Tint a Sprite. <br />
添加两个精灵,使用BoundingBox让两个精灵互相碰撞,参考Detect Whether Two Models Collide.<br />
<br />
Use <a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/Keyboard_Input_Framework_Xna_Microsoft_T.htm">Keyboard</a>, <a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/Mouse_Input_Framework_Xna_Microsoft_T.htm">Mouse</a>, or <a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/GamePad_Input_Framework_Xna_Microsoft_T.htm">GamePad </a>to make the sprite respond to movements of an input device. (See <a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/Input_XNA.htm">Input Overview</a>.) <br />
Create some audio events so that the sprite makes sounds as it moves. (See <a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/Audio_HowTo_AddSoundFile.htm">How To: Add a Sound File to Your Game Using XACT and How To: Play a Sound</a>.) <br />
使用键盘,鼠标或者GamePad使精灵响应输入操作,参考 Input Overview<br />
创建一些声音事件,当它运行时制造一些声音,参考Add a Sound File to Your Game Using XACT and How To: Play a Sound.<br />
Instead of a sprite, use a 3D primitive that moves around in 3D space. (See <a target="_blank" href="ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.XNAGS.1033/XNA/Draw_3D_Primitives.htm">How To: Draw Points, Lines, and Other 3D Primitives.</a>) <br />
使用3D取代精灵,并在3D空间中移动<br />
<br />
Get more ideas and resources at <a target="_blank" href="http://creators.xna.com">XNA Creators Club Online. </a><br />
更多的方法和资源请访问XNA Creators Club Online. <br />
<br />
<br />
//第一次翻译外文并发表,翻译得不好,献丑了
<img src ="http://www.cnblogs.com/kkun/aggbug/1080999.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42131/" target="_blank">[新闻]祝Google 10周岁生日快乐</a>]]></description></item><item><title>Could not find a Direct3D device that has a Direct3D9-level driver and supports pixel shader 1.1 or greater.终极解决方法</title><link>http://www.cnblogs.com/kkun/archive/2008/02/21/1076533.html</link><dc:creator>kkun</dc:creator><author>kkun</author><pubDate>Thu, 21 Feb 2008 07:15:00 GMT</pubDate><guid>http://www.cnblogs.com/kkun/archive/2008/02/21/1076533.html</guid><wfw:comment>http://www.cnblogs.com/kkun/comments/1076533.html</wfw:comment><comments>http://www.cnblogs.com/kkun/archive/2008/02/21/1076533.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/kkun/comments/commentRss/1076533.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/kkun/services/trackbacks/1076533.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 今天想试试XNA2.0好玩不好玩,结果上来就遇到难题,从网上DOWN下来XNA STUDIO后安装一切顺利,<br />
之后安装了DX9,一切顺利,新建一个项目,运行,报错!<br />
<span style="color: #0010ff;">Could not find a Direct3D device that has a Direct3D9-level driver and supports pixel shader 1.1 or greater.<br />
</span><br />
&nbsp;&nbsp;&nbsp; 网上先查一查,结果中文资料好少,从一些网站了解到,是由于显示太老,给出的答案是:换显卡;<br />
后来搜到<a target="_blank" href="http://forums.xna.com/thread/38592.aspx ">一篇文章</a>中提到,可以更改渲染方式,指定为软件模拟而不使用硬件,由于以前研究过一段时间DX,<br />
感觉这应该是个解决的办法,当然最终还是依靠这个思路解决的,这篇文章并没有最终解决问题的代码,但是也帮了不少的忙,<br />
先看最初的代码吧,<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><img id="Codehighlighter1_54_267_Open_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_54_267_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_54_267_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_54_267_Closed_Text').style.display='inline';" alt="" align="top" /><img id="Codehighlighter1_54_267_Closed_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_54_267_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_54_267_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_54_267_Open_Text').style.display='inline';" alt="" align="top" /><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Game1&nbsp;:&nbsp;Microsoft.Xna.Framework.Game&nbsp;</span><span id="Codehighlighter1_54_267_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_54_267_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GraphicsDeviceManager&nbsp;graphics;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SpriteBatch&nbsp;spriteBatch;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img id="Codehighlighter1_153_267_Open_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_153_267_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_153_267_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_153_267_Closed_Text').style.display='inline';" alt="" align="top" /><img id="Codehighlighter1_153_267_Closed_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_153_267_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_153_267_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_153_267_Open_Text').style.display='inline';" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;Game1()&nbsp;</span><span id="Codehighlighter1_153_267_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_153_267_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;graphics&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;GraphicsDeviceManager(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Content.RootDirectory&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">Content</span><span style="color: #800000;">"</span><span style="color: #000000;">;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></span></div>
<br />
这里只贴出了部分代码,就是构造一个Game1,然后执行<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><img id="Codehighlighter1_25_266_Open_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_25_266_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_25_266_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_25_266_Closed_Text').style.display='inline';" alt="" align="top" /><img id="Codehighlighter1_25_266_Closed_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_25_266_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_25_266_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_25_266_Open_Text').style.display='inline';" alt="" align="top" /><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Program&nbsp;</span><span id="Codehighlighter1_25_266_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_25_266_Open_Text"><span style="color: #000000;">{<br />
<img id="Codehighlighter1_35_126_Open_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_35_126_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_35_126_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_35_126_Closed_Text').style.display='inline';" alt="" align="top" /><img id="Codehighlighter1_35_126_Closed_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_35_126_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_35_126_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_35_126_Open_Text').style.display='inline';" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_35_126_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;">/**/</span><span id="Codehighlighter1_35_126_Open_Text"><span style="color: #808080;">///</span><span style="color: #008000;">&nbsp;</span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080;">///</span><span style="color: #008000;">&nbsp;The&nbsp;main&nbsp;entry&nbsp;point&nbsp;for&nbsp;the&nbsp;application.<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080;">///</span><span style="color: #008000;">&nbsp;</span><span style="color: #808080;">&lt;/summary&gt;</span></span><br />
<img id="Codehighlighter1_166_266_Open_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_166_266_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_166_266_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_166_266_Closed_Text').style.display='inline';" alt="" align="top" /><img id="Codehighlighter1_166_266_Closed_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_166_266_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_166_266_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_166_266_Open_Text').style.display='inline';" alt="" align="top" /><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;Main(</span><span style="color: #0000ff;">string</span><span style="color: #000000;">[]&nbsp;args)&nbsp;</span><span id="Codehighlighter1_166_266_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_166_266_Open_Text"><span style="color: #000000;">{<br />
<img id="Codehighlighter1_213_256_Open_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_213_256_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_213_256_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_213_256_Closed_Text').style.display='inline';" alt="" align="top" /><img id="Codehighlighter1_213_256_Closed_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_213_256_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_213_256_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_213_256_Open_Text').style.display='inline';" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;(Game1&nbsp;game&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Game1())&nbsp;</span><span id="Codehighlighter1_213_256_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_213_256_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;game.Run();<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></span></div>
然后就报错了,如题目描述;<br />
<br />
为了使用软件渲染,将代码修改如下<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><img id="Codehighlighter1_54_811_Open_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_54_811_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_54_811_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_54_811_Closed_Text').style.display='inline';" alt="" align="top" /><img id="Codehighlighter1_54_811_Closed_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_54_811_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_54_811_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_54_811_Open_Text').style.display='inline';" alt="" align="top" /><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Game1&nbsp;:&nbsp;Microsoft.Xna.Framework.Game&nbsp;</span><span id="Codehighlighter1_54_811_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_54_811_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GraphicsDeviceManager&nbsp;graphics;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SpriteBatch&nbsp;spriteBatch;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img id="Codehighlighter1_153_401_Open_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_153_401_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_153_401_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_153_401_Closed_Text').style.display='inline';" alt="" align="top" /><img id="Codehighlighter1_153_401_Closed_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_153_401_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_153_401_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_153_401_Open_Text').style.display='inline';" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;Game1()&nbsp;</span><span id="Codehighlighter1_153_401_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_153_401_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;graphics&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;GraphicsDeviceManager(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Content.RootDirectory&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">Content</span><span style="color: #800000;">"</span><span style="color: #000000;">;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;graphics.PreparingDeviceSettings&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;EventHandler</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">PreparingDeviceSettingsEventArgs</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">(graphics_PreparingDeviceSettings);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img id="Codehighlighter1_500_811_Open_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_500_811_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_500_811_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_500_811_Closed_Text').style.display='inline';" alt="" align="top" /><img id="Codehighlighter1_500_811_Closed_Image" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_500_811_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_500_811_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_500_811_Open_Text').style.display='inline';" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;graphics_PreparingDeviceSettings(</span><span style="color: #0000ff;">object</span><span style="color: #000000;">&nbsp;sender,&nbsp;PreparingDeviceSettingsEventArgs&nbsp;e)&nbsp;</span><span id="Codehighlighter1_500_811_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_500_811_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.GraphicsDeviceInformation.CreationOptions&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;CreateOptions.SoftwareVertexProcessing;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.GraphicsDeviceInformation.DeviceType&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;DeviceType.Reference;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.GraphicsDeviceInformation.PresentationParameters.MultiSampleType&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;MultiSampleType.None;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></span></div>
F5执行,直接提示我,<br />
错误&nbsp;&nbsp; &nbsp;2&nbsp;&nbsp; &nbsp;当前上下文中不存在名称&#8220;CreateOptions&#8221;&nbsp;&nbsp; &nbsp;E:"WindowsGame1"WindowsGame1"Game1.cs&nbsp;&nbsp; &nbsp;27&nbsp;&nbsp; &nbsp;67&nbsp;&nbsp; &nbsp;WindowsGame1<br />
<br />
又从网上搜索,发现此方法已经被Removed,将其注释掉编译通过,<br />
F5执行,提示<br />
<span style="color: #0010ff;">Could not find a Direct3D device that has a Direct3D9-level driver and supports pixel shader 1.1 or greater.</span><br />
晕,这不又回到原点了么,<br />
<br />
后来调试发现,此方法似乎并没有执行,为什么没有执行呢?我也没兴趣研究下去了,现在我只想运行出一个窗口来!<br />
终于在<a href="http://www.nuclex.org/downloads/developers/snippets/xna-referencegraphicsdevicemanager">一个国外的网站</a>上发现了一个好东西,<br />
<h1>ReferenceGraphicsDeviceManager</h1>
这个东西基本可以解决问题了,新建一个类ReferenceGraphicsDeviceManager,然后将GraphicsDeviceManager替换为ReferenceGraphicsDeviceManager,再次编译,报错,这个类的作者在写的时候XNA2.0应该还没出呢,于是这次都是一些版本上的错误,一一修改后,编译通过,F5运行...<br />
<br />
<em><span style="color: #786c73;">
通过,将此代码上传,希望对此有研究的高人表笑话,如果此文对您有些许帮助,荣幸之极,<br />
本人在此过程中仅仅充当了一个finder角色,一些东西还停留在学习的阶段,共同进步吧!</span></em><br />
<br />
<a href="/Files/kkun/ReferenceGraphicsDeviceManager.rar">/Files/kkun/ReferenceGraphicsDeviceManager.rar</a><br />
<br />
<img src ="http://www.cnblogs.com/kkun/aggbug/1076533.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42130/" target="_blank">[新闻]Google十年市值达1500亿美元 创造奇迹</a>]]></description></item><item><title>单词查询小软件,简单实用</title><link>http://www.cnblogs.com/kkun/archive/2008/01/24/1051954.html</link><dc:creator>kkun</dc:creator><author>kkun</author><pubDate>Thu, 24 Jan 2008 09:46:00 GMT</pubDate><guid>http://www.cnblogs.com/kkun/archive/2008/01/24/1051954.html</guid><wfw:comment>http://www.cnblogs.com/kkun/comments/1051954.html</wfw:comment><comments>http://www.cnblogs.com/kkun/archive/2008/01/24/1051954.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cnblogs.com/kkun/comments/commentRss/1051954.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/kkun/services/trackbacks/1051954.html</trackback:ping><description><![CDATA[<strong>简单介绍:</strong><br />
&nbsp;* 更新了批量更新功能;<br />
&nbsp;* 更新了任务栏显示功能;<br />
&nbsp;* 主要功能有,单词查询,单词读音,<br />
&nbsp;* 支持热键Ctrl + "+"号,显示或隐藏界面,方便随时调用<br />
&nbsp;* 查询"+" + 单词首字母,查看数据更新情况,如查询"+a",则显示"查询到XXX条以a开头的单词"<br />
&nbsp;* 修复了每次查询都需要联机的错误,直接查询本地数据,使得查询速度更快,<br />
&nbsp;* 修复了现有数据路径的算法,<br />
&nbsp;* 再次声明,本软件数据全部来自<a target="_blank" href="http://www.cnblogs.com/kkun/admin/www.dict.cn">www.dict.cn</a>网站,请勿商用,以免造成不必要的麻烦,<br />
&nbsp;* 软件本身您可以无限制的使用,完全免费且开放源代码,源码可以<a target="_blank" href="http://kkun.cnblogs.com/">http://kkun.cnblogs.com</a>下载<br />
&nbsp;* 软件运行需要.NET2.0框架支持,<br />
&nbsp;* 完全绿色安装,解压缩即可使用,不写注册表,没有插件,不更改客户机的任何现有设置,<br />
&nbsp;* 从事软件开发很多年,这是偶第一次发布自己开发的软件,请多多支持,任何建议,交流或BUG请联系:<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#104;&#101;&#98;&#107;&#107;&#117;&#110;&#64;&#49;&#54;&#51;&#46;&#99;&#111;&#109;">hebkkun@163.com</a><br />
&nbsp; * 再次感谢下载,祝您使用愉快!<br />
<strong><br />
软件界面:<br />
</strong><img src="http://www.cnblogs.com/images/cnblogs_com/kkun/minidict1.jpg" alt="" width="456" border="0" height="234" /><br />
主界面,Enter键查询或播放声音,ESC键清空输入框或关闭窗口<br />
<br />
<img src="http://www.cnblogs.com/images/cnblogs_com/kkun/Dict2.jpg" alt="" border="0" /><br />
点击随机获取文章,将从<a target="_blank" href="http://www.unsv.com/">http://www.unsv.com</a>随机获取一篇VOA,然后点击分析"按钮"后,会分析文章中所有在本地不存在的单词,将这些单词放在一个LISTBOX中,点击更新将依次更新到本地,方便建库.暂停功能就不介绍了.<br />
<em><u>自动更新目前还有些小BUG,就是如果子线程正在往硬盘上写数据的时候,<br />
关闭主窗口,则会报错.那位朋友有这方面的经验劳烦指点一下,感激不尽!</u></em><br />
<strong><br />
数据存储:</strong><br />
原来是使用SQL存储数据的,后来一度想使用ACCESS,考虑到性能及部署,最终选择将数据直接存储在硬盘上<br />
声明:本软件所有使用的数据均来自<a target="_blank" href="http://www.dict.cn/"><u><em><strong>www.dict.cn</strong></em></u></a>,请勿商用其数据,以免造成不必要的麻烦,<strong></strong><br />
<br />
<strong> 下载地址:</strong><br />
软件大小(<strong>2586</strong> KB),地址已经更新(2008-1-29 13:01)<br />
每次查询会将查询到的数据自动保存到本地<br />
<a target="_blank" href="http://www.cnblogs.com/Files/kkun/Release.rar">http://www.cnblogs.com/Files/kkun/Release.rar</a><br />
<a target="_blank" href="http://www.onlinedown.net/soft/63860.htm"></a><br />
<strong>&nbsp;源码下载:<br />
</strong>
<a href="http://www.cnblogs.com/Files/kkun/App,Dict,Lib,32.rar">http://www.cnblogs.com/Files/kkun/App,Dict,Lib,32.rar </a><br />
如果打开项目时提示需要输入密码,请输入<span style="color: #ff0000;">624159</span>,很不好意思,今天有园子里的朋友问了这才想起来了,<br />
<br />
<strong>其它:<br />
</strong>非常荣幸,华军将此软件收录,<br />
<a target="_blank" href="http://www.baidu.com/s?wd=%B5%A5%B4%CA%B2%E9%D1%AF%D0%A1%C8%ED%BC%FE&amp;cl=3">http://www.baidu.com/s?wd=%B5%A5%B4%CA%B2%E9%D1%AF%D0%A1%C8%ED%BC%FE&amp;cl=3</a><br />
<a target="_blank" href="http://www.onlinedown.net/soft/63860.htm">http://www.onlinedown.net/soft/63860.htm</a><img src ="http://www.cnblogs.com/kkun/aggbug/1051954.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42129/" target="_blank">[新闻]GMail:回过头来支持IE6</a>]]></description></item></channel></rss>