??xml version="1.0" encoding="utf-8" standalone="yes"?>日本强好片久久久久久AAA,亚洲天堂久久精品,久久99精品国产99久久6http://www.shnenglu.com/sunicdavy/category/11296.html讨论?309800774 知乎x:http://zhihu.com/people/sunicdavy 开源项?https://github.com/davyxuzh-cnMon, 27 Dec 2021 17:00:48 GMTMon, 27 Dec 2021 17:00:48 GMT60Event对应Entitas的GetTrigger+Collectorhttp://www.shnenglu.com/sunicdavy/archive/2021/12/27/217896.html战魂筑战魂筑Mon, 27 Dec 2021 11:05:00 GMThttp://www.shnenglu.com/sunicdavy/archive/2021/12/27/217896.htmlhttp://www.shnenglu.com/sunicdavy/comments/217896.htmlhttp://www.shnenglu.com/sunicdavy/archive/2021/12/27/217896.html#Feedback0http://www.shnenglu.com/sunicdavy/comments/commentRss/217896.htmlhttp://www.shnenglu.com/sunicdavy/services/trackbacks/217896.html阅读全文

战魂筑 2021-12-27 19:05 发表评论
]]>
Qt 4.8.x 升到Qt5.x的各U坑http://www.shnenglu.com/sunicdavy/archive/2014/03/01/206000.html战魂筑战魂筑Sat, 01 Mar 2014 06:25:00 GMThttp://www.shnenglu.com/sunicdavy/archive/2014/03/01/206000.htmlhttp://www.shnenglu.com/sunicdavy/comments/206000.htmlhttp://www.shnenglu.com/sunicdavy/archive/2014/03/01/206000.html#Feedback3http://www.shnenglu.com/sunicdavy/comments/commentRss/206000.htmlhttp://www.shnenglu.com/sunicdavy/services/trackbacks/206000.htmlQt5 已易? 脑残的事情也q的来多.

看qt下蝲?/a>的Qt的windows版本默认提供32位和64? 那个啥opengl版暂时未理会

因ؓ本hpȝ是win7 64bit, 因此毫无理由的下载了64位的qt5.2版本. ~译了hello world, l果报错:

module machine type 'x64' conflicts with target machine type 'X86'

找了半天没查到错? 后面注意到vs2012的工E编译类型选择的是win32 x86, 才想h׃qt5的所有lib?4位编? 而我使用32位的E序去链? 当然要报?

重新下蝲32位的qt5.2, ~译正确

 

另外一个错误也是在前面版本极ؓ见?

fatal error C1083: Cannot open include file: ’GLES2/gl2.h? No such file or directory

很多人的解决Ҏ是包含QtANGLE下的gles2目录, 但是׃我的工程内的cocos2dx本n也带有这东西. 于是研究了下为啥q版本的qt默认要搞的非要和gles有关p?

最l? 发现可以通过定义QT_NO_OPENGL宏来屏蔽opengl的渲染API使用, ~译通过

 

很是怀念诺Z时代的qt, 下蝲,~译一气呵?/p>

战魂筑 2014-03-01 14:25 发表评论
]]>
Qt应用E序使用囑Ş解码无法昄的问?/title><link>http://www.shnenglu.com/sunicdavy/archive/2013/08/10/202448.html</link><dc:creator>战魂筑</dc:creator><author>战魂筑</author><pubDate>Sat, 10 Aug 2013 01:44:00 GMT</pubDate><guid>http://www.shnenglu.com/sunicdavy/archive/2013/08/10/202448.html</guid><wfw:comment>http://www.shnenglu.com/sunicdavy/comments/202448.html</wfw:comment><comments>http://www.shnenglu.com/sunicdavy/archive/2013/08/10/202448.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/sunicdavy/comments/commentRss/202448.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/sunicdavy/services/trackbacks/202448.html</trackback:ping><description><![CDATA[<p>最q发C个Qt写的切图软g, 导入PNG囄可以昄, 而JPEG囄无法昄. 开发机正常. Google了一? 发现Qt通过外部插g机制支持各种扩展功能. </p> <p>在启动前, d如下代码:</p> <p>QApplication qapp(argc, argv);    </p> <p>qapp.addLibraryPath(QCoreApplication::applicationDirPath()+"/plugins");<br></p> <p>QT开发目录下: Qt\4.8.2\plugins\拯到Qt的exe目录卛_</p><img src ="http://www.shnenglu.com/sunicdavy/aggbug/202448.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/sunicdavy/" target="_blank">战魂筑</a> 2013-08-10 09:44 <a href="http://www.shnenglu.com/sunicdavy/archive/2013/08/10/202448.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>切换Qt版本, 修改$(QTDIR)指向http://www.shnenglu.com/sunicdavy/archive/2012/07/14/183384.html战魂筑战魂筑Sat, 14 Jul 2012 07:35:00 GMThttp://www.shnenglu.com/sunicdavy/archive/2012/07/14/183384.htmlhttp://www.shnenglu.com/sunicdavy/comments/183384.htmlhttp://www.shnenglu.com/sunicdavy/archive/2012/07/14/183384.html#Feedback0http://www.shnenglu.com/sunicdavy/comments/commentRss/183384.htmlhttp://www.shnenglu.com/sunicdavy/services/trackbacks/183384.html最q从Qt4.7.0 升?Qt4.8.2, 装好了新的open sdk, 但是观察工程中的引用依旧?.7.0

在Windows环境变量中没有找?(QTDIR)

随即在Qt的Visual Studio 插g菜单? Qt->Qt Options-> Qt Versions

讄Default Qt/Win version为新版本

选中原有的Qt工程, 在插件菜单中扑ֈQt Project Settings->Properties->Version?版本设|ؓ最新版?/p>

如果装有Visual AssitX, 此时q东西应该开始Parse新的Qt库了

have fun 微笑!



战魂筑 2012-07-14 15:35 发表评论
]]>
正确收到Qt属性控件中输入框消?/title><link>http://www.shnenglu.com/sunicdavy/archive/2011/05/06/145846.html</link><dc:creator>战魂筑</dc:creator><author>战魂筑</author><pubDate>Fri, 06 May 2011 13:11:00 GMT</pubDate><guid>http://www.shnenglu.com/sunicdavy/archive/2011/05/06/145846.html</guid><wfw:comment>http://www.shnenglu.com/sunicdavy/comments/145846.html</wfw:comment><comments>http://www.shnenglu.com/sunicdavy/archive/2011/05/06/145846.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/sunicdavy/comments/commentRss/145846.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/sunicdavy/services/trackbacks/145846.html</trackback:ping><description><![CDATA[<p>QtPropertyBrowser2.5中的字符串属性对应的修改方式是一个输入框,OnValueChange是在每次键入字符时发送一?q个对于~辑器需要的逻辑来说是一U灾? Ogitor修改了其源码,解决了这个问?</p> <p>qteditorfactory.h ?/p> <p>QtLineEditFactorycL加如下代?U色标识</p><pre class="csharpcode"><span id="kaissgu" class="kwrd">class</span> QT_QTPROPERTYBROWSER_EXPORT QtLineEditFactory : <span id="mqscacu" class="kwrd">public</span> QtAbstractEditorFactory<QtStringPropertyManager> { Q_OBJECT <span id="kmwiqke" class="kwrd">public</span>: QtLineEditFactory(QObject *parent = 0); ~QtLineEditFactory(); <span id="acigeoo" class="kwrd">protected</span>: <span id="qswswgo" class="kwrd">void</span> connectPropertyManager(QtStringPropertyManager *manager); QWidget *createEditor(QtStringPropertyManager *manager, QtProperty *property, QWidget *parent); <span id="giwimoo" class="kwrd">void</span> disconnectPropertyManager(QtStringPropertyManager *manager); <span id="coioggy" class="kwrd">private</span>: QtLineEditFactoryPrivate *d_ptr; Q_DECLARE_PRIVATE(QtLineEditFactory) Q_DISABLE_COPY(QtLineEditFactory) Q_PRIVATE_SLOT(d_func(), <span id="aegmquw" class="kwrd">void</span> slotPropertyChanged(QtProperty *, <span id="seyuqiq" class="kwrd">const</span> QString &)) Q_PRIVATE_SLOT(d_func(), <span id="uokyaka" class="kwrd">void</span> slotRegExpChanged(QtProperty *, <span id="augcqqy" class="kwrd">const</span> QRegExp &)) Q_PRIVATE_SLOT(d_func(), <span id="uguaeoo" class="kwrd">void</span> slotSetValue(<span id="qsokogo" class="kwrd">const</span> QString &)) <font color="#ff0000"> Q_PRIVATE_SLOT(d_func(), <span id="iaekogo" class="kwrd">void</span> slotEditingFinished())</font> Q_PRIVATE_SLOT(d_func(), <span id="mqmqscc" class="kwrd">void</span> slotEditorDestroyed(QObject *)) }; </pre><pre class="csharpcode"> </pre><pre class="csharpcode">qteditorfactory.cpp?/pre><pre class="csharpcode"><span id="ikwcwom" class="kwrd">class</span> QtLineEditFactoryPrivate : <span id="iugaeom" class="kwrd">public</span> EditorFactoryPrivate<QLineEdit> { QtLineEditFactory *q_ptr; Q_DECLARE_PUBLIC(QtLineEditFactory) <span id="wgikoyq" class="kwrd">public</span>: <span id="quysygq" class="kwrd">void</span> slotPropertyChanged(QtProperty *property, <span id="ymyuiqi" class="kwrd">const</span> QString &<span id="oagkeue" class="kwrd">value</span>); <span id="oikwakk" class="kwrd">void</span> slotRegExpChanged(QtProperty *property, <span id="auoiemw" class="kwrd">const</span> QRegExp &regExp); <span id="qcgkogg" class="kwrd">void</span> slotSetValue(<span id="giuosak" class="kwrd">const</span> QString &<span id="amgcyga" class="kwrd">value</span>); <font color="#ff0000"> <span id="gyuykcu" class="kwrd">void</span> slotEditingFinished();</font> }; </pre><pre class="csharpcode"><font color="#ff0000"><span id="eqmymmm" class="kwrd">void</span> QtLineEditFactoryPrivate::slotEditingFinished() { QObject *<span id="osgiuww" class="kwrd">object</span> = q_ptr->sender(); <span id="mguqusk" class="kwrd">const</span> QMap<QLineEdit *, QtProperty *>::ConstIterator ecend = m_editorToProperty.constEnd(); <span id="oauaume" class="kwrd">for</span> (QMap<QLineEdit *, QtProperty *>::ConstIterator itEditor = m_editorToProperty.constBegin(); itEditor != ecend; ++itEditor) <span id="wqeamwm" class="kwrd">if</span> (itEditor.key() == <span id="smikoyg" class="kwrd">object</span>) { QtProperty *property = itEditor.<span id="wioawwu" class="kwrd">value</span>(); QtStringPropertyManager *manager = q_ptr->propertyManager(property); <span id="smawyaa" class="kwrd">if</span> (!manager) <span id="acgkggg" class="kwrd">return</span>; QString <span id="auycigg" class="kwrd">value</span> = static_cast<QLineEdit*>(itEditor.key())->text(); manager->setValue(property, <span id="kwieqai" class="kwrd">value</span>); <span id="ykqqwuu" class="kwrd">return</span>; } }</font> </pre><pre class="csharpcode">QWidget *QtLineEditFactory::createEditor(QtStringPropertyManager *manager, QtProperty *property, QWidget *parent) { QLineEdit *editor = d_ptr->createEditor(property, parent); QRegExp regExp = manager->regExp(property); <span id="qkwkwow" class="kwrd">if</span> (regExp.isValid()) { QValidator *validator = <span id="wycoucc" class="kwrd">new</span> QRegExpValidator(regExp, editor); editor->setValidator(validator); } editor->setText(manager-><span id="wikyccc" class="kwrd">value</span>(property)); <font color="#ff0000"> connect(editor, SIGNAL(editingFinished()), <span id="ieqmiqa" class="kwrd">this</span>, SLOT(slotEditingFinished()));</font> connect(editor, SIGNAL(destroyed(QObject *)), <span id="oquyeme" class="kwrd">this</span>, SLOT(slotEditorDestroyed(QObject *))); <span id="wcouass" class="kwrd">return</span> editor; } </pre><pre class="csharpcode"> </pre><pre class="csharpcode">q样既可在输入回车键,或者输入框失去焦点后生一个OnValueChange事g</pre> <style type="text/css">.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } </style> <style type="text/css">.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } </style> <style type="text/css">.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } </style> <style type="text/css">.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } </style><img src ="http://www.shnenglu.com/sunicdavy/aggbug/145846.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/sunicdavy/" target="_blank">战魂筑</a> 2011-05-06 21:11 <a href="http://www.shnenglu.com/sunicdavy/archive/2011/05/06/145846.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QtPropertyBrowser的新下蝲位置http://www.shnenglu.com/sunicdavy/archive/2010/12/31/137816.html战魂筑战魂筑Fri, 31 Dec 2010 14:36:00 GMThttp://www.shnenglu.com/sunicdavy/archive/2010/12/31/137816.htmlhttp://www.shnenglu.com/sunicdavy/comments/137816.htmlhttp://www.shnenglu.com/sunicdavy/archive/2010/12/31/137816.html#Feedback1http://www.shnenglu.com/sunicdavy/comments/commentRss/137816.htmlhttp://www.shnenglu.com/sunicdavy/services/trackbacks/137816.htmlQt下的属性控件QtPropertyBrowser在Google中资料很,而且在很多介l的文章里的下蝲地址都指向了QtMobility,q个东西跟非手机q_没有太大关系。找了很久,发现?a >http://qt.nokia.com/downloads面的右下角有一个FTP链接Q?/p>

ftp://ftp.qt.nokia.com/

提示也写着在这里可以下载到以前的一些Qt?/p>

在里面终于可以找?a href="ftp://ftp.qt.nokia.com/qt/solutions/lgpl/qtpropertybrowser-2.5_1-opensource.zip">qtpropertybrowser-2.5_1-opensource.zip

下蝲后,用VisualStudio的Qt插g打开proQ有例子有设|好的工E,q愁文档么,呵呵



战魂筑 2010-12-31 22:36 发表评论
]]>
C++界面库的抉择http://www.shnenglu.com/sunicdavy/archive/2010/07/28/121477.html战魂筑战魂筑Wed, 28 Jul 2010 09:22:00 GMThttp://www.shnenglu.com/sunicdavy/archive/2010/07/28/121477.htmlhttp://www.shnenglu.com/sunicdavy/comments/121477.htmlhttp://www.shnenglu.com/sunicdavy/archive/2010/07/28/121477.html#Feedback28http://www.shnenglu.com/sunicdavy/comments/commentRss/121477.htmlhttp://www.shnenglu.com/sunicdavy/services/trackbacks/121477.htmlC++的界面库l过几天来的搜烦Qȝ了下面几U的优缺?/p>

1. MFC

   优点QVS2008以及VS2010的扩展确实很强大Q特别是原生的窗口运行时停靠以及PropertyGrid实很强?/p>

   ~点Q默认字体很模糊Q无Z对MFC多了解,C++多熟悉,每次写代码时依然要重新熟悉代码,更不用提分析别h写的MFC代码Q一个字Qؕ?/p>

2. WTL

   优点QWindows下有个最好的例子QGoogle Chrome

   ~点Q缺乏设计器Q文档例子很?/p>

3. wxWidgets

   优点Q虚q?~辑器在用(不是q告Q,wxAUI的布局设计器很方便QWindows原生界面很舒服,各种功能装都很C?/p>

   ~点Q布局没有cMGTK+的Fixedl对坐标方式QWindows SDK默认的左上角像素定位方式Q,在某些界面显得设计麻烦?动态链接库多的吓hQ工E过于臃ѝ?/p>

4. Qt, GTK+

    据说Windows下不是很好用?/p>

5. DirectUI

    有很多个人封装类似功能的库。界面,代码分离, ?9%都是收费

6. C# Windows Form

    q是很好的选择Q语a斚w可以用C++/CLI 免得转换语言

   自由停靠功能可以使用WeiFenLuo.winFormsUI.Docking 非常?/p>

7. WPF

   有童鞋已l用MFC/C++通过加蝲XML昄界面Q不q通过资料昄QWPF的控件很,甚至q原生的PropertyGrid都没有,设计器倒是很华?/p>

 

ȝQ界面库的选择最重要的一点就是看有没有很好的设计器,q个是高效开发的重中之重。我重MFCQ敬仰MFCQ它作ؓC++的框架库来说很不错,但是对于界面设计q是q老了。我们开发的是品,出的是程序,而不是研IMFCQ怎样用好MFC?/p>

战魂筑 2010-07-28 17:22 发表评论
]]>
LemonComposer 2D游戏动画开发工?/title><link>http://www.shnenglu.com/sunicdavy/archive/2010/02/05/107257.html</link><dc:creator>战魂筑</dc:creator><author>战魂筑</author><pubDate>Fri, 05 Feb 2010 06:58:00 GMT</pubDate><guid>http://www.shnenglu.com/sunicdavy/archive/2010/02/05/107257.html</guid><wfw:comment>http://www.shnenglu.com/sunicdavy/comments/107257.html</wfw:comment><comments>http://www.shnenglu.com/sunicdavy/archive/2010/02/05/107257.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.shnenglu.com/sunicdavy/comments/commentRss/107257.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/sunicdavy/services/trackbacks/107257.html</trackback:ping><description><![CDATA[<p>Lemon是本人开发的一套适用?D游戏动画和高U游戏框架及配套~辑器(LemonComposerQ?/p> <blockquote> <p>LemonpȝҎ:</p> <p>1. 支持 Canvas,Sprite,ImageSetQ图片存储于一张图片,{大)</p> <p>2. ImageSetExQ自由摆攄囄帧于一张图片)*</p> <p>3. 支持对象无关键时用静态属性进行设|,cM于HGE里的_</p> <p>4. 每个对象均可成ؓContainerQƈ拥有Child Node</p> <p>5. 动画关键帧类型支持:~放Q旋转,位移Q颜Ԍ动画帧,锚点Q音?</p> <p>6. 支持拑֏</p> <p>7. ZXML存储的文件格?/p> <p>8. Z<a >Squirrel</a>N脚本的高速面向对象脚?</p> <p>9. 囑ŞpȝGraphics抽象Q适用于Q何渲染设?/p> <p>10. 控gpȝ*</p> <p>11. 视频回放*</p> <p>所有对象均由RTTI创徏Q枚丑֝有NamePool+HashQƈ׃PropertySet的反系l?/p> <p> </p></blockquote> <blockquote> <p>LemonComposer~辑器特?/p> <p>界面Z我去q开发的<a href="http://www.shnenglu.com/sunicdavy/archive/2009/07/24/91059.html">MotionUI</a>Qlua</p> <p>8+1控制点点对象调节属?/p> <p>cAdobe Flash的~辑?/p> <p>c?DS Max的分轨道关键帧编辑,有助于优化art assert</p> <p>自由调节对象层及父子关p?/p> <p>全功能无限制自由Redo,Undo</p> <p> </p></blockquote> <p>*在未来版本支持</p> <p><a href="http://www.shnenglu.com/images/cppblog_com/sunicdavy/WindowsLiveWriter/LemonComposer2D_D2B9/image_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.shnenglu.com/images/cppblog_com/sunicdavy/WindowsLiveWriter/LemonComposer2D_D2B9/image_thumb.png" width="483" height="300"></a> </p> <p> </p> <p> </p> <blockquote> <p>2D游戏是独立游戏的LQ也是创意,投入比最的一个维度。但是基?D的大多是一些类gHGEQIndieLib{开源免?D引擎。但是面Ҏ戏中大量的动画而言Q开发者大多是使用囄帧来制作Q虽然效果很好,但是讑֤资源好用和制作难度也是很难控制的?/p></blockquote> <blockquote> <p>行于去q的植物对僵和2004q发行的<a >RO Offline</a>l过资源分析Q就是用类gLemonpȝQ或者说Flash的系l制作而成Q因此效果和扩展性非常好?/p> <p>q就是Lemon存在的理由?/p> <p>Flash面向的是GDI+WebQ那么Lemon是针对游戏专有的,Zg加速的游戏框架</p> <p>Flash Action Script 对应的就是Lemon?a >Squirrel</a>脚本</p> <p>FlashIDE 对应的就是Lemon Composer</p> <p>Lemon的目标就是让2D游戏开发更单,让游戏中充满更多的动? 让游戏开发难度降?/p> <p><a href="http://www.shnenglu.com/images/cppblog_com/sunicdavy/WindowsLiveWriter/LemonComposer2D_D2B9/farming-gold-in-pvz%5B1%5D_2.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="farming-gold-in-pvz[1]" border="0" alt="farming-gold-in-pvz[1]" src="http://www.shnenglu.com/images/cppblog_com/sunicdavy/WindowsLiveWriter/LemonComposer2D_D2B9/farming-gold-in-pvz%5B1%5D_thumb.jpg" width="244" height="196"></a></p></blockquote><img src ="http://www.shnenglu.com/sunicdavy/aggbug/107257.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/sunicdavy/" target="_blank">战魂筑</a> 2010-02-05 14:58 <a href="http://www.shnenglu.com/sunicdavy/archive/2010/02/05/107257.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>判断点在凸四边Ş?/title><link>http://www.shnenglu.com/sunicdavy/archive/2010/01/08/105136.html</link><dc:creator>战魂筑</dc:creator><author>战魂筑</author><pubDate>Fri, 08 Jan 2010 02:29:00 GMT</pubDate><guid>http://www.shnenglu.com/sunicdavy/archive/2010/01/08/105136.html</guid><wfw:comment>http://www.shnenglu.com/sunicdavy/comments/105136.html</wfw:comment><comments>http://www.shnenglu.com/sunicdavy/archive/2010/01/08/105136.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.shnenglu.com/sunicdavy/comments/commentRss/105136.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/sunicdavy/services/trackbacks/105136.html</trackback:ping><description><![CDATA[<p>前几天需要做一个鼠标点d定,具体是判断一个点是否在某个凸四边形中?/p> <p>最单的Ҏ莫过于判断鼠标点是否?个三角Ş中。但是很多判定方法都是有问题的,比如?/p> <p> </p> <p>copy自IndieLib</p><pre class="csharpcode"><span id="macqmcm" class="kwrd">bool</span> Triangle2D::Inside2( <span id="skykwgw" class="kwrd">const</span> Vector2& p ) { Vector2 v0 = mP3 - mP1; Vector2 v1 = mP2 - mP1; Vector2 v2 = p - mP1; <span id="mocykmy" class="rem">// Compute dot products</span> <span id="yieqmew" class="kwrd">float</span> dot00 = Vector2::DotProduct( v0, v0 ); <span id="smosyoy" class="kwrd">float</span> dot01 = Vector2::DotProduct( v0, v1 ); <span id="aeakoyg" class="kwrd">float</span> dot02 = Vector2::DotProduct( v0, v2 ); <span id="uykeyyy" class="kwrd">float</span> dot11 = Vector2::DotProduct( v1, v1 ); <span id="ioquygq" class="kwrd">float</span> dot12 = Vector2::DotProduct( v1, v2 ); <span id="wamquem" class="rem">// Compute barycentric coordinates</span> <span id="smieqqq" class="kwrd">float</span> invDenom = 1 / (dot00 * dot11 - dot01 * dot01); <span id="acuykkk" class="kwrd">float</span> u = (dot11 * dot02 - dot01 * dot12) * invDenom; <span id="wqcikss" class="kwrd">float</span> v = (dot00 * dot12 - dot01 * dot02) * invDenom; <span id="qawiooo" class="rem">// Check if point is in triangle</span> <span id="gqmimce" class="kwrd">return</span> (u > 0) && (v > 0) && (u + v < 1); } </pre> <style type="text/css">.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } </style> <p>Google出的某h代码 <pre class="csharpcode"><span id="yioioew" class="kwrd">float</span> Triangle2D::CrossProduct3(<span id="oawaoow" class="kwrd">const</span> Vector2& p1,<span id="qmqmaaq" class="kwrd">const</span> Vector2& p2, <span id="smqmgqy" class="kwrd">const</span> Vector2& p0 ) { <span id="oamaewe" class="kwrd">return</span> (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y); } <span id="mqkwacc" class="kwrd">bool</span> Triangle2D::Inside( <span id="qsosmwu" class="kwrd">const</span> Vector2& p ) { <span id="imckuee" class="kwrd">return</span> (CrossProduct3(mP1,p,mP2)*CrossProduct3(mP3,p,mP2)<0) && (CrossProduct3(mP2,p,mP1)*CrossProduct3(mP3,p,mP1)<0) && (CrossProduct3(mP1,p,mP3)*CrossProduct3(mP2,p,mP3)<0); } </pre> <style type="text/css">.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } </style> <p>  <p>q?个方法都有缺P当点在三角Ş边上Ӟ无法得出。当用在一个正方Ş判断Ӟ正方形中心点判定ؓ没有在其内部Q显然是一个错误? <p>  <p>之后Q又Google出某几个大侠的算法和思想Q考虑了下Q判定点与四边Ş重心点的U段是否与四边Ş4条边怺Q相交时Q其在四边Ş外部Q反之亦然?<pre class="csharpcode"><span id="ysoimwu" class="kwrd">bool</span> Quadrangle::Inside2( <span id="kuowuuu" class="kwrd">const</span> Vector2& p ) { Vector2 c = Segement2D::GetCrossPoint( mP1, mP3, mP2, mP4 ); <span id="seqkqgy" class="kwrd">return</span> !(Segement2D::Intersect( mP1, mP2, c, p) || Segement2D::Intersect( mP2, mP3, c, p) || Segement2D::Intersect( mP3, mP4, c, p) || Segement2D::Intersect( mP4, mP1, c, p) ); } <span id="ycokewm" class="kwrd">bool</span> Segement2D::Intersect( <span id="oacyuss" class="kwrd">const</span> Vector2& p1, <span id="ququiyq" class="kwrd">const</span> Vector2& p2,<span id="keyciqa" class="kwrd">const</span> Vector2& p3, <span id="qkmieem" class="kwrd">const</span> Vector2& p4 ) { <span id="wqkocss" class="kwrd">float</span> gradab, gradcd, ycptab, ycptcd, interceptX, intercepty; <span id="uwcwauk" class="rem">// In order to avoid divisions by zero</span> <span id="mgawcck" class="rem">//if (mP1.y == mP2.y)</span> <span id="oiokeyi" class="rem">// mP2.y += 0.0001f; </span> <span id="yuwcoge" class="rem">//if (mP1.x == mP2.x)</span> <span id="gsycggg" class="rem">// mP2.x += 0.0001f; </span> <span id="gkoaowo" class="rem">//if (seg.mP1.y == seg.mP2.y)</span> <span id="koquyiy" class="rem">// seg.mP2.y += 0.0001f; </span> <span id="keagiii" class="rem">//if (seg.mP1.x == seg.mP2.x)</span> <span id="egceaaa" class="rem">// seg.mP2.x += 0.0001f; </span> <span id="smguwyo" class="rem">// Calculates the intersection between the two lines</span> gradab = (p1.y - p2.y) / (p1.x - p2.x); gradcd = (p3.y - p4.y) / (p3.x - p4.x); ycptab = p1.y - p1.x * gradab; ycptcd = p3.y - p3.x * gradcd; interceptX = (ycptab - ycptcd) / (gradcd - gradab); intercepty = (ycptab - (gradab * ycptcd) / gradcd) / (1 - gradab / gradcd); <span id="ugugsca" class="rem">// Checking in the intersection is inside the segment</span> <span id="esmimuk" class="kwrd">if</span> (!((interceptX >= p1.x && interceptX <= p2.x) || (interceptX >= p2.x && interceptX <= p1.x))) <span id="swkoqia" class="kwrd">return</span> 0; <span id="oauiukc" class="kwrd">if</span> (!((intercepty >= p1.y && intercepty <= p2.y) || (intercepty >= p2.y && intercepty <= p1.y))) <span id="eikycka" class="kwrd">return</span> 0; <span id="aeykwoo" class="kwrd">if</span> (!((interceptX >= p3.x && interceptX <= p4.x) || (interceptX >= p4.x && interceptX <= p3.x))) <span id="yyuicuu" class="kwrd">return</span> 0; <span id="mosgiks" class="kwrd">if</span> (!((intercepty >= p3.y && intercepty <= p4.y) || (intercepty >= p4.y && intercepty <= p3.y))) <span id="smqmgog" class="kwrd">return</span> 0; <span id="uekgakk" class="kwrd">return</span> 1; } Vector2 Segement2D::GetCrossPoint(<span id="eiegckm" class="kwrd">const</span> Vector2& p1, <span id="koawsia" class="kwrd">const</span> Vector2& p2, <span id="wiuseyg" class="kwrd">const</span> Vector2& q1, <span id="gksoqai" class="kwrd">const</span> Vector2& q2) { <span id="kwaesks" class="rem">//必须怺求出的才是线D늚交点Q但是下面的E序D|通用?</span> <span id="gsgqego" class="rem">/*Ҏ两点式化为标准式Q进而求U性方E组*/</span> Vector2 crossPoint; <span id="qcgcwoo" class="rem">//求x坐标</span> <span id="ggsgiia" class="kwrd">float</span> tempLeft = (q2.x - q1.x) * (p1.y - p2.y) - (p2.x - p1.x) * (q1.y - q2.y); <span id="iswceeg" class="kwrd">float</span> tempRight = (p1.y - q1.y) * (p2.x - p1.x) * (q2.x - q1.x) + q1.x * (q2.y - q1.y) * (p2.x - p1.x) - p1.x * (p2.y - p1.y) * (q2.x - q1.x); crossPoint.x = tempRight / tempLeft; <span id="akeaego" class="rem">//求y坐标</span> tempLeft = (p1.x - p2.x) * (q2.y - q1.y) - (p2.y - p1.y) * (q1.x - q2.x); tempRight = p2.y * (p1.x - p2.x) * (q2.y - q1.y) + (q2.x- p2.x) * (q2.y - q1.y) * (p1.y - p2.y) - q2.y * (q1.x - q2.x) * (p2.y - p1.y); crossPoint.y = tempRight / tempLeft; <span id="oimgugo" class="kwrd">return</span> crossPoint; } </pre> <style type="text/css">.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } </style> <p>q个法效率q不是很高,但对于设计器来说无所谓了Q如果有好的准确法Q可以讨?/p><img src ="http://www.shnenglu.com/sunicdavy/aggbug/105136.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/sunicdavy/" target="_blank">战魂筑</a> 2010-01-08 10:29 <a href="http://www.shnenglu.com/sunicdavy/archive/2010/01/08/105136.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>判断点在凸四边Ş?/title><link>http://www.shnenglu.com/sunicdavy/archive/2010/01/08/105135.html</link><dc:creator>战魂筑</dc:creator><author>战魂筑</author><pubDate>Fri, 08 Jan 2010 02:27:00 GMT</pubDate><guid>http://www.shnenglu.com/sunicdavy/archive/2010/01/08/105135.html</guid><wfw:comment>http://www.shnenglu.com/sunicdavy/comments/105135.html</wfw:comment><comments>http://www.shnenglu.com/sunicdavy/archive/2010/01/08/105135.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/sunicdavy/comments/commentRss/105135.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/sunicdavy/services/trackbacks/105135.html</trackback:ping><description><![CDATA[<p>前几天需要做一个鼠标点d定,具体是判断一个点是否在某个凸四边形中?/p> <p>最单的Ҏ莫过于判断鼠标点是否?个三角Ş中。但是很多判定方法都是有问题的,比如?/p> <p> </p> <p>copy自IndieLib</p><pre class="csharpcode"><span id="ssyaeow" class="kwrd">bool</span> Triangle2D::Inside2( <span id="kwymiqi" class="kwrd">const</span> Vector2& p ) { Vector2 v0 = mP3 - mP1; Vector2 v1 = mP2 - mP1; Vector2 v2 = p - mP1; <span id="yoawkkk" class="rem">// Compute dot products</span> <span id="iaaqcss" class="kwrd">float</span> dot00 = Vector2::DotProduct( v0, v0 ); <span id="mocquss" class="kwrd">float</span> dot01 = Vector2::DotProduct( v0, v1 ); <span id="yicyqog" class="kwrd">float</span> dot02 = Vector2::DotProduct( v0, v2 ); <span id="icgkgwg" class="kwrd">float</span> dot11 = Vector2::DotProduct( v1, v1 ); <span id="qqeqmce" class="kwrd">float</span> dot12 = Vector2::DotProduct( v1, v2 ); <span id="gymqccc" class="rem">// Compute barycentric coordinates</span> <span id="ewkosqa" class="kwrd">float</span> invDenom = 1 / (dot00 * dot11 - dot01 * dot01); <span id="cmycgyi" class="kwrd">float</span> u = (dot11 * dot02 - dot01 * dot12) * invDenom; <span id="iimswuo" class="kwrd">float</span> v = (dot00 * dot12 - dot01 * dot02) * invDenom; <span id="wgswiii" class="rem">// Check if point is in triangle</span> <span id="oygmgoq" class="kwrd">return</span> (u > 0) && (v > 0) && (u + v < 1); } </pre> <style type="text/css">.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } </style> <p>Google出的某h代码 <pre class="csharpcode"><span id="uuguggo" class="kwrd">float</span> Triangle2D::CrossProduct3(<span id="emswyia" class="kwrd">const</span> Vector2& p1,<span id="qigmgyq" class="kwrd">const</span> Vector2& p2, <span id="eoioiii" class="kwrd">const</span> Vector2& p0 ) { <span id="kcgkogq" class="kwrd">return</span> (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y); } <span id="wmiuqyq" class="kwrd">bool</span> Triangle2D::Inside( <span id="iseawme" class="kwrd">const</span> Vector2& p ) { <span id="aaemccs" class="kwrd">return</span> (CrossProduct3(mP1,p,mP2)*CrossProduct3(mP3,p,mP2)<0) && (CrossProduct3(mP2,p,mP1)*CrossProduct3(mP3,p,mP1)<0) && (CrossProduct3(mP1,p,mP3)*CrossProduct3(mP2,p,mP3)<0); } </pre> <style type="text/css">.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } </style> <p>  <p>q?个方法都有缺P当点在三角Ş边上Ӟ无法得出。当用在一个正方Ş判断Ӟ正方形中心点判定ؓ没有在其内部Q显然是一个错误? <p>  <p>之后Q又Google出某几个大侠的算法和思想Q考虑了下Q判定点与四边Ş重心点的U段是否与四边Ş4条边怺Q相交时Q其在四边Ş外部Q反之亦然?<pre class="csharpcode"><span id="umgmqqq" class="kwrd">bool</span> Quadrangle::Inside2( <span id="ksocyog" class="kwrd">const</span> Vector2& p ) { Vector2 c = Segement2D::GetCrossPoint( mP1, mP3, mP2, mP4 ); <span id="goimaaa" class="kwrd">return</span> !(Segement2D::Intersect( mP1, mP2, c, p) || Segement2D::Intersect( mP2, mP3, c, p) || Segement2D::Intersect( mP3, mP4, c, p) || Segement2D::Intersect( mP4, mP1, c, p) ); } <span id="ssgkooo" class="kwrd">bool</span> Segement2D::Intersect( <span id="gquykuc" class="kwrd">const</span> Vector2& p1, <span id="wuqcwgo" class="kwrd">const</span> Vector2& p2,<span id="eequyyy" class="kwrd">const</span> Vector2& p3, <span id="wagsewe" class="kwrd">const</span> Vector2& p4 ) { <span id="isoimee" class="kwrd">float</span> gradab, gradcd, ycptab, ycptcd, interceptX, intercepty; <span id="mesmiqq" class="rem">// In order to avoid divisions by zero</span> <span id="wgkwask" class="rem">//if (mP1.y == mP2.y)</span> <span id="qykugyq" class="rem">// mP2.y += 0.0001f; </span> <span id="moawqgg" class="rem">//if (mP1.x == mP2.x)</span> <span id="ogsmaqs" class="rem">// mP2.x += 0.0001f; </span> <span id="cicikus" class="rem">//if (seg.mP1.y == seg.mP2.y)</span> <span id="qgmqmuu" class="rem">// seg.mP2.y += 0.0001f; </span> <span id="wwkgass" class="rem">//if (seg.mP1.x == seg.mP2.x)</span> <span id="muyawmo" class="rem">// seg.mP2.x += 0.0001f; </span> <span id="kkgkgog" class="rem">// Calculates the intersection between the two lines</span> gradab = (p1.y - p2.y) / (p1.x - p2.x); gradcd = (p3.y - p4.y) / (p3.x - p4.x); ycptab = p1.y - p1.x * gradab; ycptcd = p3.y - p3.x * gradcd; interceptX = (ycptab - ycptcd) / (gradcd - gradab); intercepty = (ycptab - (gradab * ycptcd) / gradcd) / (1 - gradab / gradcd); <span id="qaeiccu" class="rem">// Checking in the intersection is inside the segment</span> <span id="siwauec" class="kwrd">if</span> (!((interceptX >= p1.x && interceptX <= p2.x) || (interceptX >= p2.x && interceptX <= p1.x))) <span id="yycyucs" class="kwrd">return</span> 0; <span id="mmyuqoq" class="kwrd">if</span> (!((intercepty >= p1.y && intercepty <= p2.y) || (intercepty >= p2.y && intercepty <= p1.y))) <span id="mcqswoo" class="kwrd">return</span> 0; <span id="aiuikck" class="kwrd">if</span> (!((interceptX >= p3.x && interceptX <= p4.x) || (interceptX >= p4.x && interceptX <= p3.x))) <span id="simyuue" class="kwrd">return</span> 0; <span id="sagseow" class="kwrd">if</span> (!((intercepty >= p3.y && intercepty <= p4.y) || (intercepty >= p4.y && intercepty <= p3.y))) <span id="gwkwasi" class="kwrd">return</span> 0; <span id="aymqcsc" class="kwrd">return</span> 1; } Vector2 Segement2D::GetCrossPoint(<span id="iieyucm" class="kwrd">const</span> Vector2& p1, <span id="aicikcc" class="kwrd">const</span> Vector2& p2, <span id="guymoog" class="kwrd">const</span> Vector2& q1, <span id="ccoswew" class="kwrd">const</span> Vector2& q2) { <span id="ksokyyy" class="rem">//必须怺求出的才是线D늚交点Q但是下面的E序D|通用?</span> <span id="mcimqgq" class="rem">/*Ҏ两点式化为标准式Q进而求U性方E组*/</span> Vector2 crossPoint; <span id="yycgmmc" class="rem">//求x坐标</span> <span id="kkqugyq" class="kwrd">float</span> tempLeft = (q2.x - q1.x) * (p1.y - p2.y) - (p2.x - p1.x) * (q1.y - q2.y); <span id="meieqoq" class="kwrd">float</span> tempRight = (p1.y - q1.y) * (p2.x - p1.x) * (q2.x - q1.x) + q1.x * (q2.y - q1.y) * (p2.x - p1.x) - p1.x * (p2.y - p1.y) * (q2.x - q1.x); crossPoint.x = tempRight / tempLeft; <span id="umykwgw" class="rem">//求y坐标</span> tempLeft = (p1.x - p2.x) * (q2.y - q1.y) - (p2.y - p1.y) * (q1.x - q2.x); tempRight = p2.y * (p1.x - p2.x) * (q2.y - q1.y) + (q2.x- p2.x) * (q2.y - q1.y) * (p1.y - p2.y) - q2.y * (q1.x - q2.x) * (p2.y - p1.y); crossPoint.y = tempRight / tempLeft; <span id="gouyaki" class="kwrd">return</span> crossPoint; } </pre> <style type="text/css">.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } </style> <p>q个法效率q不是很高,但对于设计器来说无所谓了Q如果有好的准确法Q可以讨?/p><img src ="http://www.shnenglu.com/sunicdavy/aggbug/105135.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/sunicdavy/" target="_blank">战魂筑</a> 2010-01-08 10:27 <a href="http://www.shnenglu.com/sunicdavy/archive/2010/01/08/105135.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SilverLight的教学资?/title><link>http://www.shnenglu.com/sunicdavy/archive/2009/12/30/104459.html</link><dc:creator>战魂筑</dc:creator><author>战魂筑</author><pubDate>Wed, 30 Dec 2009 08:45:00 GMT</pubDate><guid>http://www.shnenglu.com/sunicdavy/archive/2009/12/30/104459.html</guid><wfw:comment>http://www.shnenglu.com/sunicdavy/comments/104459.html</wfw:comment><comments>http://www.shnenglu.com/sunicdavy/archive/2009/12/30/104459.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/sunicdavy/comments/commentRss/104459.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/sunicdavy/services/trackbacks/104459.html</trackback:ping><description><![CDATA[<p>中文C֌Q?a >http://silverlight.cn/</a></p> <p>微Y官方中文MSDNQ?a >http://msdn.microsoft.com/zh-cn/library/cc838158(VS.95).aspx</a></p> <p>微Y官方英文MSDN例子Q?a >http://samples.msdn.microsoft.com/Silverlight/SampleBrowser/index.htm#/?sref=HomePage</a></p><img src ="http://www.shnenglu.com/sunicdavy/aggbug/104459.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/sunicdavy/" target="_blank">战魂筑</a> 2009-12-30 16:45 <a href="http://www.shnenglu.com/sunicdavy/archive/2009/12/30/104459.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对SilverLight的初步了?/title><link>http://www.shnenglu.com/sunicdavy/archive/2009/12/30/104457.html</link><dc:creator>战魂筑</dc:creator><author>战魂筑</author><pubDate>Wed, 30 Dec 2009 08:36:00 GMT</pubDate><guid>http://www.shnenglu.com/sunicdavy/archive/2009/12/30/104457.html</guid><wfw:comment>http://www.shnenglu.com/sunicdavy/comments/104457.html</wfw:comment><comments>http://www.shnenglu.com/sunicdavy/archive/2009/12/30/104457.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.shnenglu.com/sunicdavy/comments/commentRss/104457.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/sunicdavy/services/trackbacks/104457.html</trackback:ping><description><![CDATA[<p>    最q研I?D动画pȝQ参考了FlashQ也参考了SilverLightQ不研究不敢写此博文</p> <p>    |上很多SilverLight和Flash比较的文章,常见的又是“Flash杀手”,“全新领域”之cȝ字眼。反观魅族M8和iPhoneQ也是这么写的。很明显都是“五毛党”的枪文Q或者一些无聊小~简单的见解?/p> <p>    你见qSilverLight做的动画片么Q?q点不奇怪, SilverLight的核心是WPFQ也是Windows的下一代界面设计理c早期的理念诸如QMFCQ?WTLQ?Net。根据我研究看来QSilverLight的动画都是基于代码的Q所以你不希望一部动ȝ是用U手工方式编写代码来制作?</p> <p>     Flash是源自于<a >FutureSplash Animator</a>Q早期版本只是一个简单设计动ȝ~辑器,因ؓ对需要控Ӟ所以加入了<a >ActionScript</a>作ؓ其控制语a。后期逐步发展壮大Q记?002q时Q曾l见q有视频格式导成swf格式q行播放Q从此,q种技术渐渐发展成为现在流行的<a >FLV</a>。以至于到现在强大的<a >RIA</a>?/p> <p>     所以这么看来,SilverLight即便发展到SilverLight 4Q也无法在动L面超qFlashQ除非添加一套类似Flash的动ȝ辑器。做动画Q必选FlashQ而且其可以跨q_Q装几率非常高。不q做<a >RIA</a>Q小受众用Visual Studio的强大工h配SilverLight/C#会大大降低开发成本?/p><img src ="http://www.shnenglu.com/sunicdavy/aggbug/104457.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/sunicdavy/" target="_blank">战魂筑</a> 2009-12-30 16:36 <a href="http://www.shnenglu.com/sunicdavy/archive/2009/12/30/104457.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ZXML的游戏UI架构设计Q一Q?/title><link>http://www.shnenglu.com/sunicdavy/archive/2009/06/08/87065.html</link><dc:creator>战魂筑</dc:creator><author>战魂筑</author><pubDate>Mon, 08 Jun 2009 06:01:00 GMT</pubDate><guid>http://www.shnenglu.com/sunicdavy/archive/2009/06/08/87065.html</guid><wfw:comment>http://www.shnenglu.com/sunicdavy/comments/87065.html</wfw:comment><comments>http://www.shnenglu.com/sunicdavy/archive/2009/06/08/87065.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/sunicdavy/comments/commentRss/87065.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/sunicdavy/services/trackbacks/87065.html</trackback:ping><description><![CDATA[ <p>    目前目中用FlashZ设计的UIQ因为兼Ҏ问题,Flash中编辑框虽然可以输入中文Q但是光标是看不到闪烁的。经q仿佛研I发玎ͼ必须d3d 的flash容器E序在后台时Q才能显C光标,q一个测试结果让我们L不行。最l决定将flash拆解开Q每个界面一个flash。但依然发现很多影响开发效率的问题? </p><p>    <a ><span style="font-family:Arial; font-size:9pt">GameBryo</span></a>引擎中支持原生的C++ GAME UIQ也支持直接播放flashQ这部分QScaleFormQ用的是以<a >GameSwf</a>为基的手动解析flash文gQ因此在~辑框等斚w做的非常好? </p><p>    Flash的UI开发灵zd很高Q底层库bug,但是与现有工E结合难度大Q因此仍然{向研I以XML为基的UI库设计? </p><p>    q里推荐几个参考: </p><p>    WowBenchQ?<a >http://sourceforge.net/projects/wowbench/</a> </p><p>        q是兽世界的UI的模拟器Q开源,可以从中了解兽世界的基本UI架构及API构成。同Ӟ兽的lua脚本在安全性和开发度上做的非常好Q这部分可以参考下? </p><p>    Mozilla XULQ?a >https://developer.mozilla.org/En/XUL</a> </p><p>        q是Mozilla战略中的一个重要组成部分,q套UI支持cM于wxWidgets或者HTML方式的排?/p><img src ="http://www.shnenglu.com/sunicdavy/aggbug/87065.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/sunicdavy/" target="_blank">战魂筑</a> 2009-06-08 14:01 <a href="http://www.shnenglu.com/sunicdavy/archive/2009/06/08/87065.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>腾讯界面库初?/title><link>http://www.shnenglu.com/sunicdavy/archive/2009/06/08/87063.html</link><dc:creator>战魂筑</dc:creator><author>战魂筑</author><pubDate>Mon, 08 Jun 2009 05:36:00 GMT</pubDate><guid>http://www.shnenglu.com/sunicdavy/archive/2009/06/08/87063.html</guid><wfw:comment>http://www.shnenglu.com/sunicdavy/comments/87063.html</wfw:comment><comments>http://www.shnenglu.com/sunicdavy/archive/2009/06/08/87063.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.shnenglu.com/sunicdavy/comments/commentRss/87063.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/sunicdavy/services/trackbacks/87063.html</trackback:ping><description><![CDATA[ <p>    腾讯C品线QQQ2009, QQ 旋风2QQQ影音{都使用了非常漂亮的界面。一直以为是自己写的Q毕竟QQ2009需要一个安全的环境以避免外挂的衍生。经qspy++探测Q发C个TXGuiFoundationQ再在网上一搜,搜到了这个东西: </p><h2>    <span style="color:#333333; font-family:Segoe UI; font-size:16pt">DSkinLite: <a ></a></span><a ><span style="color:blue; text-decoration:underline">http://uieasy.cn/downloads.html </span></a></h2><a ></a><p><a ><img src="http://www.shnenglu.com/images/cppblog_com/sunicdavy/060809_0535_1.png" alt="" border="0"></a> </p><p><span style="font-size:9pt; text-decoration:underline"><span style="color:blue">    </span><span style="color:#333333"><span style="font-family:Arial"> Dskinlite </span>是一ƾ轻量?span style="font-family:Arial">C++</span>皮肤库,使用<span style="font-family:Arial">XML</span>文gҎ规则来管?span style="font-family:Arial">GDI</span>资源如颜Ԍ字体Q图片,q描q界面构成,最大程度的界面和E序逻辑分离Q同时ؓ软g皮肤更换Q换色等提供基础支持?span style="font-family:Arial">DSkinLite</span>界面构成元素抽象ؓU条元素Q矩形元素,囄元素Q文本元素,q提供相应规则来使用q些元素<span style="font-family:Arial">"</span>l合<span style="font-family:Arial">"</span>界面?span style="font-family:Arial">DSkinlite</span>开发团队有较深?span style="font-family:Arial">Windows</span>界面开发的实际l历Q对软g界面处理颇有心得Q致力于实用,高效Q前沿的界面处理技术介l给q大开发h员?span style="font-family:Arial"> </span></span><span style="color:blue"> </span></span></p><p><span style="font-size:9pt; text-decoration:underline"><span style="color:#333333"><span style="font-family:Arial">        DSkinLite</span>与其他界面库相比有以下特点:<span style="font-family:Arial"> </span>没有采用<span style="font-family:Arial">Hook</span>所有进E消息的方式Q因此没有替换系l相兛_话框?span style="font-family:Arial">DSkinLite</span>只是采用<span style="font-family:Arial">MFC</span>Q?span style="font-family:Arial">ATL</span>{?span style="font-family:Arial">framework</span>cM的方式,单替换窗口过E,截取界面l制{消息,对应用程序来说基本上是透明的。从q个斚wԌ<span style="font-family:Arial">DSkinLite</span>是一ƾ轻量的界面库?span style="font-family:Arial"> </span>同时Q?span style="font-family:Arial">DSkinLite</span>没有特别?span style="font-family:Arial">Frameword</span>的依赖,可以?span style="font-family:Arial">Win32</span>Q?span style="font-family:Arial">MFC,ATL,WTL</span>{环境中使用?span style="font-family:Arial"> DSkinLite</span>界面库?span style="font-family:Arial">XML</span>理<span style="font-family:Arial">GDI</span>资源q|窗口界面,用户可以方便的保持界面的一致性,同时可以很方便的构造出更多的窗口样?span style="font-family:Arial"> </span>界面库的高效性?span style="font-family:Arial">DSkinLite</span>专注于E序库的高效性,具体表现在内存占用,界面l制速度Q界面防止闪烁,E序加蝲囄资源、解?span style="font-family:Arial">XML</span>文g的速度{方面,我们做了很多工作Qƈ不断持箋优化。以期望E序各方面表现最为高效的界面E序库?span style="font-family:Arial"> <br>        DSkinLite </span>皮肤库的E序架构考虑到可能出现的界面ҎQ得实现诸如透明Q渐隐渐显,动画{界面特效变得更加容易,目前支持大多数控件的透明效果Q后l会Ҏ用户需求,开发更多的实用的界面特效?span style="font-family:Arial"> </span></span><span style="color:blue"> </span></span></p><h3><span style="text-decoration:underline"><span style="color:#333333; font-size:10pt">使用<span style="font-family:Segoe UI">XML</span>配置控g的界?span style="font-family:Segoe UI"> </span></span><span style="color:blue"> </span></span></h3><ul><li><span style="font-size:9pt; text-decoration:underline"><span style="color:#333333">使用<span style="font-family:Arial">XML</span>定义<span style="font-family:Arial">GDI</span>资源Q颜Ԍ字体Q图片,<span style="font-family:Arial">cursor</span>Q?span style="font-family:Arial"> </span></span><span style="color:blue"> </span></span></li><li><span style="font-size:9pt; text-decoration:underline"><span style="color:#333333">使用<span style="font-family:Arial">XML</span>配置控g的界面风?span style="font-family:Arial"> </span></span><span style="color:blue"> </span></span></li><li><span style="font-size:9pt; text-decoration:underline"><span style="color:#333333">l制元素被抽象ؓU条Q文本,矩ŞQ图?span style="font-family:Arial"> </span></span><span style="color:blue"> </span></span></li><li><div>  </div><p><span style="font-size:9pt; text-decoration:underline"><span style="color:#333333"><span style="font-family:Arial">XML</span>语法单,易于学习和掌?span style="font-family:Arial"> </span></span><span style="color:blue"> </span></span></p><p> </p><h3><span style="text-decoration:underline"><span style="color:#333333; font-size:10pt">其他关键Ҏ?span style="font-family:Segoe UI"> </span></span><span style="color:blue"> </span></span></h3><p> </p></li><li><span style="font-size:9pt; text-decoration:underline"><span style="color:#333333">Z<span style="font-family:Arial">Win32 API</span>Q没?span style="font-family:Arial">framework</span>依赖?span style="font-family:Arial"> </span></span><span style="color:blue"> </span></span></li><li><span style="font-size:9pt; text-decoration:underline"><span style="color:#333333">支持大多数标准控?span style="font-family:Arial"> </span></span><span style="color:blue"> </span></span></li><li><span style="font-size:9pt; text-decoration:underline"><span style="color:#333333">支持改变皮肤色调<span style="font-family:Arial"> </span></span><span style="color:blue"> </span></span></li><li><span style="font-size:9pt; text-decoration:underline"><span style="color:#333333">支持大多数控仉明Q包括子H口透明<span style="font-family:Arial"> </span></span><span style="color:blue"> </span></span></li><li><span style="font-size:9pt; text-decoration:underline"><span style="color:#333333">支持动画效果<span style="font-family:Arial"> </span></span><span style="color:blue"> </span></span></li><li><span style="font-size:9pt; text-decoration:underline"><span style="color:#333333">支持<span style="font-family:Arial">png, bitmap, gif, ico</span>囄格式。支持带透明通道?span style="font-family:Arial">png</span>囄<span style="font-family:Arial"> </span></span><span style="color:blue"> </span></span></li><li><span style="font-size:9pt; text-decoration:underline"><span style="color:#333333">支持皮肤文件打包到一个文?span style="font-family:Arial"> </span></span><span style="color:blue"> </span></span></li><li><span style="font-size:9pt; text-decoration:underline"><span style="color:#333333">支持<span style="font-family:Arial">Unicode </span></span><span style="color:blue"> </span></span></li><li><span style="font-size:9pt; text-decoration:underline"><span style="color:#333333">支持<span style="font-family:Arial">Popup Menu</span>{,包括不规则的<span style="font-family:Arial">menu window </span></span><span style="color:blue"> </span></span></li><li><div>  </div><p><span style="font-size:9pt; text-decoration:underline"><span style="color:#333333">支持滚动条控Ӟ同时支持所有内|滚动条控制<span style="font-family:Arial"> </span></span><span style="color:blue"> </span></span></p><p>   </p><p>该网站还提到一个DirectUI的东西,q个东西是一Uwindowless的架构,具体概念cM于游戏中的UIQ不依赖q_句柄Q因此外挂只能截取诸如QQZATL的外H口Q但是无法获取窗口内部的数据 </p></li></ul><p> </p><img src ="http://www.shnenglu.com/sunicdavy/aggbug/87063.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/sunicdavy/" target="_blank">战魂筑</a> 2009-06-08 13:36 <a href="http://www.shnenglu.com/sunicdavy/archive/2009/06/08/87063.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.191c.cn" target="_blank">þþŷղa</a>| <a href="http://www.dzeuegg.cn" target="_blank">ٸþþþþñŪ߳ </a>| <a href="http://www.fa808.cn" target="_blank">˺ݺۺϾþ޸</a>| <a href="http://www.waterbirds.cn" target="_blank">þù</a>| <a href="http://www.chipsummit.cn" target="_blank">þùŷպƷ</a>| <a href="http://www.mofeigzs.cn" target="_blank">VۺVŷþ</a>| <a href="http://www.zhaopf.com.cn" target="_blank">aëƬþѲ</a>| <a href="http://www.lafei-pingtai.cn" target="_blank">þþоƷ</a>| <a href="http://www.8xbu.cn" target="_blank">Ʒһþ</a>| <a href="http://www.86bzpp.cn" target="_blank">vaþþþͬ </a>| <a href="http://www.lwtjf.cn" target="_blank">þۺ¶þü</a>| <a href="http://www.hygame8888.cn" target="_blank">þþþAVվ </a>| <a href="http://www.7dapei.cn" target="_blank">vaþþþ</a>| <a href="http://www.jl893.com.cn" target="_blank">Ʒþþþþ</a>| <a href="http://www.essledyntp.com.cn" target="_blank">þþþþëƬѿ</a>| <a href="http://www.marsit.cn" target="_blank">þþƷվ</a>| <a href="http://www.uutools.cn" target="_blank">þþþþþòҰ¸߳</a>| <a href="http://www.ahtsz.cn" target="_blank">91þþƷƵ</a>| <a href="http://www.t24196.cn" target="_blank">ƷҹþøƬ</a>| <a href="http://www.daliandamingda.cn" target="_blank">ƷŮ߳׾þþ</a>| <a href="http://www.digital-agri.org.cn" target="_blank">ɫۺϾþ</a>| <a href="http://www.flznzb.cn" target="_blank">ҰĻþ</a>| <a href="http://www.cube4you.cn" target="_blank">˾þĻ</a>| <a href="http://www.aizhei.cn" target="_blank">þùƷƷ</a>| <a href="http://www.songshuidaojia.cn" target="_blank">þ99ۺϾƷŮͬ</a>| <a href="http://www.bihuresorthotel.cn" target="_blank">þsmȤ</a>| <a href="http://www.anfubbs.cn" target="_blank">þ99þëƬһ </a>| <a href="http://www.qrcj.net.cn" target="_blank">Ůþþþþ</a>| <a href="http://www.xford.cn" target="_blank">þþ </a>| <a href="http://www.wd12cjf8.cn" target="_blank">þþþþþƵ</a>| <a href="http://www.c825.cn" target="_blank">þþþĻɫ</a>| <a href="http://www.kvgr.cn" target="_blank">91Ƶ91þþ</a>| <a href="http://www.zongjiagou.com.cn" target="_blank">þþƷëƬѹۿ</a>| <a href="http://www.gz2378.cn" target="_blank">AVþüįٸ</a>| <a href="http://www.janl.cn" target="_blank">ŮþþŮ</a>| <a href="http://www.cnmncom.cn" target="_blank">޾Ʒþþþþþþþþþ </a>| <a href="http://www.clkj168.cn" target="_blank">鶹þþ9ԴƬ</a>| <a href="http://www.yxwelding.com.cn" target="_blank">þþþþþþ</a>| <a href="http://www.cube4you.cn" target="_blank">þþžѸƵ</a>| <a href="http://www.cnhtyy.cn" target="_blank">ݹ97þ÷ѹۿ</a>| <a href="http://www.r234.cn" target="_blank">ŷһþþƷ޾Ʒþþþ </a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>