<?xml version="1.0" encoding="UTF-8" ?> <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>Windows アプリケーション</title><link>http://blogs.wankuma.com/yo/category/1346.aspx</link><description>Windows Form, WPF などの Windows アプリケーションプログラム</description><managingEditor>おのでら</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>おのでら</dc:creator><title>わんくま大阪勉強会#22お疲れ様でした</title><link>http://blogs.wankuma.com/yo/archive/2008/08/27/154473.aspx</link><pubDate>Wed, 27 Aug 2008 23:01:00 GMT</pubDate><guid>http://blogs.wankuma.com/yo/archive/2008/08/27/154473.aspx</guid><wfw:comment>http://blogs.wankuma.com/yo/comments/154473.aspx</wfw:comment><comments>http://blogs.wankuma.com/yo/archive/2008/08/27/154473.aspx#Feedback</comments><slash:comments>42</slash:comments><wfw:commentRss>http://blogs.wankuma.com/yo/comments/commentRss/154473.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/yo/services/trackbacks/154473.aspx</trackback:ping><description>&lt;p&gt;　ちょっと遅れていまいましたが、わんくま大阪勉強会#22 に現地参加された方々、USTREAM で参加された方々お疲れ様でした。&lt;/p&gt; &lt;p&gt;　私はLT(ライトニングトーク)で参加させていただきましたが、こういう場で話すのは初めてというのもあり、準備に少し時間を取られてしまいました。（事前にディスプレイが映るか確認しておけばよかったですね(^^;)）&lt;/p&gt; &lt;p&gt;　内容の方は「HLSLを使って高速な画像処理をやってみよー」というお題で、.NET Framework 3.5 SP1 から WPF で使えるようになった HLSL を使って、再生中の動画に対してリアルタイムにエフェクト（画像処理）を掛けるというデモをやってみました。&lt;/p&gt; &lt;p&gt;　結構量が多くて時間的にきつきつだったため早口状態になってしまい、うまく伝わったかなーという心配がありましたがどうだったでしょうか？&lt;/p&gt; &lt;p&gt;　とりあえず LT という短い時間だったので、こんな風に使えばできるよーというよりは、こんなことができるよーという感じで説明してみましたので、まあ頭の片隅にでもこういうものあるんだなー程度でも知っていただければうれしい限りです。&lt;/p&gt; &lt;p&gt;　LT だと資料が残らないので PowerPoint の資料とデモプログラムをアップしておきますので欲しい方はダウンロードしちゃってくださいｗ&lt;/p&gt; &lt;p&gt;【PowerPoint 資料】&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://yo.wankuma.com/blog/data/2008-08-27_wankuma_oosaka_22_pptx.zip"&gt;2008-08-27_wankuma_oosaka_22_pptx.zip&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;【実行ファイル】&lt;/p&gt; &lt;p&gt;必要な環境&lt;/p&gt; &lt;ul&gt; &lt;li&gt;.NET Framework 3.5 SP1  &lt;li&gt;Windows XP SP2 以降&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;　セピアの固定エフェクトですが DirectX SDK は不要です。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://yo.wankuma.com/blog/data/2008-08-27_hlslshadertest_exe.zip"&gt;2008-08-27_hlslshadertest_exe.zip&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;【プロジェクト】&lt;/p&gt; &lt;p&gt;必要な環境&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Visual Studio 2008 SP1  &lt;li&gt;Windows XP SP2 以降&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;　以下のプロジェクトは「Microsoft DirectX SDK (August 2008)」が必須です。エフェクトファイル（.fx）ファイルを書き換えれば任意のエフェクトを動画にかけることができます。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://yo.wankuma.com/blog/data/2008-08-27_hlslshadertest_project.zip"&gt;2008-08-27_hlslshadertest_project.zip&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;　以下のプロジェクトは DirectX SDK が必要ないプロジェクトですが、エフェクトファイルをコンパイルできないので動画にセピアをかけるだけのものになります。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://yo.wankuma.com/blog/data/2008-08-27_hlslshadertest_compiled_project.zip"&gt;2008-08-27_hlslshadertest_compiled_project.zip&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src ="http://blogs.wankuma.com/yo/aggbug/154473.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>オノデラ</dc:creator><title>Twitter のスパムフォローを一括でブロック Ver 0.30</title><link>http://blogs.wankuma.com/yo/archive/2008/06/17/144033.aspx</link><pubDate>Tue, 17 Jun 2008 02:50:00 GMT</pubDate><guid>http://blogs.wankuma.com/yo/archive/2008/06/17/144033.aspx</guid><wfw:comment>http://blogs.wankuma.com/yo/comments/144033.aspx</wfw:comment><comments>http://blogs.wankuma.com/yo/archive/2008/06/17/144033.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/yo/comments/commentRss/144033.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/yo/services/trackbacks/144033.aspx</trackback:ping><description>&lt;p&gt;　Twitter のスパムフォローを一括でブロックできるツールを作ってみました。はい、ブロックするためだけのツールです。(^^;)&lt;/p&gt; &lt;p&gt;　前回の Ver 0.20 から以下の内容が修正・改善されています。&lt;/p&gt; &lt;h4 class="SectionHeading2"&gt;ブロック確認するダイアログを専用に作って表示&lt;/h4&gt; &lt;p&gt;　はつねさんに指摘を受けたところです。どのユーザーがブロックされるか確認するためにメッセージボックスで表示していましたが、ユーザーが多いとメッセージボックスが縦に伸びでボタンが押せなくなるというアホみたいなバグでしたw&lt;br&gt;　専用のダイアログにリストビューを乗っけてそこにブロックユーザーを表示しています。&lt;/p&gt; &lt;h4 class="SectionHeading2"&gt;フォロー済みのユーザーがわかるようにした&lt;/h4&gt; &lt;p&gt;　新たにフォロー済みフラグの列を追加して、すでにフォローしているユーザーがわかるようになりました。間違ってフォロー済みのユーザーをブロックしてしまうことを未然に防げるようになったと思います。&lt;/p&gt; &lt;h4 class="SectionHeading2"&gt;ヘッダークリックによるユーザーのソート&lt;/h4&gt; &lt;p&gt;　指定した列のヘッダをクリックするとユーザーの並びをソートできます。たとえば、フォローの列をクリックすれば、フォロー済みかそうでないかで分けられるのでブロックするのも楽になると思います。&lt;/p&gt; &lt;h4 class="SectionHeading2"&gt;非同期処理の残り処理数を表示&lt;/h4&gt; &lt;p&gt;　Twitter API によるアクセスはすべて非同期で行っているので、残りの処理数があるとわかりやすいと思いつけました。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;　あとは細かいので省略します。ということで以下のページからダウンロードできます。バージョンは 0.30 です。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://sorceryforce.com/tool/supakotwitter.html"&gt;http://sorceryforce.com/tool/supakotwitter.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src ="http://blogs.wankuma.com/yo/aggbug/144033.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>オノデラ</dc:creator><title>Twitter のスパムフォローを一括でブロック</title><link>http://blogs.wankuma.com/yo/archive/2008/06/14/143720.aspx</link><pubDate>Sat, 14 Jun 2008 15:55:00 GMT</pubDate><guid>http://blogs.wankuma.com/yo/archive/2008/06/14/143720.aspx</guid><wfw:comment>http://blogs.wankuma.com/yo/comments/143720.aspx</wfw:comment><comments>http://blogs.wankuma.com/yo/archive/2008/06/14/143720.aspx#Feedback</comments><slash:comments>34</slash:comments><wfw:commentRss>http://blogs.wankuma.com/yo/comments/commentRss/143720.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/yo/services/trackbacks/143720.aspx</trackback:ping><description>&lt;p&gt;　Twitter のスパムフォローを一括でブロックできるツールを作ってみました。はい、ブロックするためだけのツールです。(^^;)&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a title="http://sorceryforce.com/tool/supakotwitter.html" href="http://sorceryforce.com/tool/supakotwitter.html"&gt;http://sorceryforce.com/tool/supakotwitter.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;　せっかく Twitter についていろいろ覚えたから他にもいろいろ出来るようにしたいな～。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/yo/aggbug/143720.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>オノデラ</dc:creator><title>Panel でチラつきなく図形をリアルタイム描画</title><link>http://blogs.wankuma.com/yo/archive/2008/05/27/139673.aspx</link><pubDate>Tue, 27 May 2008 20:04:00 GMT</pubDate><guid>http://blogs.wankuma.com/yo/archive/2008/05/27/139673.aspx</guid><wfw:comment>http://blogs.wankuma.com/yo/comments/139673.aspx</wfw:comment><comments>http://blogs.wankuma.com/yo/archive/2008/05/27/139673.aspx#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://blogs.wankuma.com/yo/comments/commentRss/139673.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/yo/services/trackbacks/139673.aspx</trackback:ping><description>&lt;p&gt;ネタ元：&lt;a href="http://bbs.wankuma.com/index.cgi?mode=al2&amp;amp;namber=19664"&gt;図形の回転&lt;/a&gt;&lt;/p&gt; &lt;p&gt;　クリアする云々よりも、図形の回転のほうに興味があったので(^^)試してみました。&lt;/p&gt; &lt;p&gt;　えぴさんの案のように描画内容をクリアすると、Panel がチラついてしまうので、Panel のクラスを派生させて細工をしています。&lt;/p&gt; &lt;p&gt;&lt;a href="http://yo.wankuma.com/blog/uploadimage/Panel_119FC/20080527.png"&gt;&lt;img height="300" alt="図形の回転" src="http://yo.wankuma.com/blog/uploadimage/Panel_119FC/20080527_thumb.png" width="300" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;　いつものように実行ファイルです。.NET Framework 2.0 で動作します。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://yo.wankuma.com/blog/data/2008-05-27_rotatecircle_exe.zip"&gt;2008-05-27_rotatecircle_exe.zip&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;　プロジェクトです。Visual Studio 2008 で作成しています。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://yo.wankuma.com/blog/data/2008-05-27_rotatecircle_project.zip"&gt;2008-05-27_rotatecircle_project.zip&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src ="http://blogs.wankuma.com/yo/aggbug/139673.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>オノデラ</dc:creator><title>Windows Vista の環境で TabControl の Dock プロパティを Fill に設定し、ウインドウを最大化すると TabPage の背景色が再描画されない</title><link>http://blogs.wankuma.com/yo/archive/2008/04/24/135120.aspx</link><pubDate>Thu, 24 Apr 2008 20:33:00 GMT</pubDate><guid>http://blogs.wankuma.com/yo/archive/2008/04/24/135120.aspx</guid><wfw:comment>http://blogs.wankuma.com/yo/comments/135120.aspx</wfw:comment><comments>http://blogs.wankuma.com/yo/archive/2008/04/24/135120.aspx#Feedback</comments><slash:comments>57</slash:comments><wfw:commentRss>http://blogs.wankuma.com/yo/comments/commentRss/135120.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/yo/services/trackbacks/135120.aspx</trackback:ping><description>&lt;p&gt;　長ったらしいエントリ名ですが(^^;)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;　タイトルのとおり、まずデザイナで Form に TabControl を貼り付け、Dock プロパティを Fill に設定します。これを Windows Vista で起動し、ウインドウを最大化すると TabPage の背景色が再描画されません。&lt;/p&gt; &lt;p&gt;　下のようなイメージです。&lt;/p&gt; &lt;p&gt;[最大化前]&lt;/p&gt; &lt;p&gt;&lt;a href="http://yo.wankuma.com/blog/uploadimage/WindowsVistaTabControlDockFillTabPage_12051/before.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="249" alt="最大化前" src="http://yo.wankuma.com/blog/uploadimage/WindowsVistaTabControlDockFillTabPage_12051/before_thumb.jpg" width="304" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;[最大化後]&lt;/p&gt; &lt;p&gt;&lt;a href="http://yo.wankuma.com/blog/uploadimage/WindowsVistaTabControlDockFillTabPage_12051/after.jpg"&gt;&lt;img height="465" alt="最大化後" src="http://yo.wankuma.com/blog/uploadimage/WindowsVistaTabControlDockFillTabPage_12051/after_thumb.jpg" width="600" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;　最近 Microsoft Connect で「Visual Studio &amp;amp; .NET Framework Japan」という日本語でもOKな項目が追加されたらしいので、今回試しにそちらでも投稿してみました。(&lt;span&gt;以前英語でやり取りしたときは結構疲れました(^^;)&lt;/span&gt;)&lt;/p&gt; &lt;p&gt;　ということでありがたみのない実行ファイルです。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://yo.wankuma.com/blog/data/2008-04-24_tabcontrol_exe.zip"&gt;2008-04-24_tabcontrol_exe.zip&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;　プロジェクトファイル一式です。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://yo.wankuma.com/blog/data/2008-04-24_tabcontrol_project.zip"&gt;2008-04-24_tabcontrol_project.zip&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src ="http://blogs.wankuma.com/yo/aggbug/135120.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>オノデラ</dc:creator><title>作成したアプリケーションの実行ファイルアイコンの変更方法</title><link>http://blogs.wankuma.com/yo/archive/2008/03/09/126954.aspx</link><pubDate>Sun, 09 Mar 2008 22:54:00 GMT</pubDate><guid>http://blogs.wankuma.com/yo/archive/2008/03/09/126954.aspx</guid><wfw:comment>http://blogs.wankuma.com/yo/comments/126954.aspx</wfw:comment><comments>http://blogs.wankuma.com/yo/archive/2008/03/09/126954.aspx#Feedback</comments><slash:comments>35</slash:comments><wfw:commentRss>http://blogs.wankuma.com/yo/comments/commentRss/126954.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/yo/services/trackbacks/126954.aspx</trackback:ping><description>&lt;p&gt;　掲示板の質問で実行ファイルアイコンの変更方法が分からないという質問があったので記事にしてみました。Win32 についての質問だったのですが、Windows フォームアプリケーション、WPF アプリケーション、MFC アプリケーションなどわかるものを一通り書いてみました。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://sorceryforce.com/visualstudio/executefileiconchange.html"&gt;実行ファイルのアイコンの変更&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src ="http://blogs.wankuma.com/yo/aggbug/126954.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>オノデラ</dc:creator><title>WPF デザイナのバグっぽい</title><link>http://blogs.wankuma.com/yo/archive/2008/03/04/126256.aspx</link><pubDate>Tue, 04 Mar 2008 18:32:00 GMT</pubDate><guid>http://blogs.wankuma.com/yo/archive/2008/03/04/126256.aspx</guid><wfw:comment>http://blogs.wankuma.com/yo/comments/126256.aspx</wfw:comment><comments>http://blogs.wankuma.com/yo/archive/2008/03/04/126256.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/yo/comments/commentRss/126256.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/yo/services/trackbacks/126256.aspx</trackback:ping><description>&lt;p&gt;　Visual Studio 2008 で簡単な WPF ウインドウを作成したのですが、ビルドをした後、作成した WPF ウインドウをデザイナで開くと、デザイナに下のようなエラー画面が表示されます。  &lt;p&gt;&lt;img height="455" alt="WPF デザイナのエラー" src="http://yo.wankuma.com/blog/uploadimage/WPF_104A6/20080304_001.png" width="658" border="0"&gt;  &lt;p&gt;　このエラーはプロジェクトを下のようなパスに配置すると発生するようです。もちろんパスの長さは２バイト換算しても 248 byte(文字数？) にはいきません。  &lt;p&gt;&lt;img height="203" alt="プロジェクトの配置パス" src="http://yo.wankuma.com/blog/uploadimage/WPF_104A6/20080304_002.jpg" width="400" border="0"&gt;  &lt;p&gt;　ちなみに名前が○になっていますが、実際は別な日本語です。  &lt;p&gt;環境  &lt;ul&gt; &lt;li&gt;Visual Studio 2008 Professional Edition&lt;/li&gt; &lt;li&gt;Windows XP SP2&lt;/li&gt; &lt;li&gt;WPF アプリケーション (.NET Framework 3.5 使用) &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;　同じ現象があるか検索してみたんですけど、まだ誰も被害にあっていないみたいorz &lt;img src ="http://blogs.wankuma.com/yo/aggbug/126256.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>オノデラ</dc:creator><title>Visual Studio 2008とWPFでXNAのコンテントパイプラインを使ってモデルを表示する</title><link>http://blogs.wankuma.com/yo/archive/2008/02/07/121843.aspx</link><pubDate>Thu, 07 Feb 2008 08:53:00 GMT</pubDate><guid>http://blogs.wankuma.com/yo/archive/2008/02/07/121843.aspx</guid><wfw:comment>http://blogs.wankuma.com/yo/comments/121843.aspx</wfw:comment><comments>http://blogs.wankuma.com/yo/archive/2008/02/07/121843.aspx#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://blogs.wankuma.com/yo/comments/commentRss/121843.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/yo/services/trackbacks/121843.aspx</trackback:ping><description>&lt;p&gt;　XNA では「Visual Studio 2005」のみをサポートしていますが、これはゲームテンプレートが用意されていないだけで、Visual Studio 2008 でも XNA Framework を使うことができます。今回は MSBuild とコンテンツパイプラインを使ってモデルを表示するサンプルを作っています。(&lt;span class="AnnotationText"&gt;今回コードをほとんど流用しているので実行ファイルのみ公開しています&lt;/span&gt;)&lt;/p&gt; &lt;p class="CenterPositionArea"&gt;&lt;img height="300" alt="WPFとXNAでモデルを読み込んで表示" src="http://yo.wankuma.com/blog/uploadimage/VisualStudio2008WPFXNA_7C77/20080207_001.png" width="300" border="0"&gt; &lt;/p&gt; &lt;p&gt;　サンプルは WPF ウインドウ上で表示させていますが、コードのほとんどは &lt;a href="http://creators.xna.com/"&gt;XNA Creators Club&lt;/a&gt; のサンプルにある「&lt;a href="http://creators.xna.com/Education/Samples.aspx"&gt;WinForms Series 2: Content Loading Sample&lt;/a&gt;」を元に作っています。プロジェクトは下のようになっています。&lt;/p&gt; &lt;p class="CenterPositionArea"&gt;&lt;img height="208" alt="プロジェクトの構成" src="http://yo.wankuma.com/blog/uploadimage/VisualStudio2008WPFXNA_7C77/20080207_002.png" width="272" border="0"&gt; &lt;br&gt;&lt;span class="AnnotationText"&gt;「Window1.xaml」以外は XNA Creators Club のサンプルをそのまま使っています。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;　コンテントパイプラインを使用するには「&lt;span class="ImportantText"&gt;MSBuild&lt;/span&gt;」系列の DLL を使うので、これらを参照として追加します。追加するのは「&lt;span class="ImportantText"&gt;Microsoft.Build.Engine&lt;/span&gt;」と「&lt;span class="ImportantText"&gt;Microsoft.Build.Framework&lt;/span&gt;」です。&lt;/p&gt; &lt;p class="CenterPositionArea"&gt;&lt;img height="186" alt="参照の追加" src="http://yo.wankuma.com/blog/uploadimage/VisualStudio2008WPFXNA_7C77/20080207_003.png" width="360" border="0"&gt; &lt;/p&gt; &lt;p&gt;　「2.0.0.0」と「3.5.0.0」の２つのバージョンがありますが、「&lt;span class="ImportantText"&gt;2.0.0.0&lt;/span&gt;」を選択します。こちらは &lt;span class="ImportantText"&gt;.NET Framework 2.0 のランタイム&lt;/span&gt;に含まれる DLL なので、開発環境のない環境でも使うことができます。&lt;/p&gt; &lt;p&gt;　コンテンツパイプラインを使う場合、「Microsoft.Xna.Framework」のほかに「&lt;span class="ImportantText"&gt;Microsoft.Xna.Framework.Content.Pipeline&lt;/span&gt;」の参照も追加してください。&lt;/p&gt; &lt;p class="CenterPositionArea"&gt;&lt;img height="187" alt="XNA Framework の参照" src="http://yo.wankuma.com/blog/uploadimage/VisualStudio2008WPFXNA_7C77/20080207_004.png" width="333" border="0"&gt; &lt;/p&gt; &lt;p&gt;　コードの説明については XNA Creators Club のコードをほとんど流用しているため省きます。違う点は Windows フォームのウインドウ(&lt;span class="AnnotationText"&gt;MainForm&lt;/span&gt;)の代わりに WPF のウインドウ(&lt;span class="AnnotationText"&gt;Window1&lt;/span&gt;)を使っている部分だけで、内部処理コードもほとんどそのままコピーしています。名前空間が重なったりするのである程度は書き直さないといけませんが(^^;)。&lt;/p&gt; &lt;p&gt;　モデルを表示するための ModelViewControl は WindowsFormsHost コントロールを使って WPF のウインドウに貼り付けています。&lt;/p&gt; &lt;h3 class="SectionHeading1"&gt;配布ファイル&lt;/h3&gt; &lt;p&gt;　以下、実行ファイルです。「&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=333325fd-ae52-4e35-b531-508d977d32a6&amp;amp;DisplayLang=ja"&gt;.NET Framework 3.0&lt;/a&gt;」と「&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=2da43d38-db71-4c1b-bc6a-9b6652cd92a3&amp;amp;DisplayLang=ja"&gt;最新の DirectX ランタイム&lt;/a&gt;」「&lt;a href="http://go.microsoft.com/fwlink/?LinkID=78244&amp;amp;clcid=0x409"&gt;Microsoft XNA Framework Redistributable 2.0&lt;/a&gt;」が必要です。また、ハードウェア要件として「&lt;span class="ImportantText"&gt;シェーダモデルバージョン 1.1 以上に対応したグラフィックカード&lt;/span&gt;」が必要です(&lt;span class="AnnotationText"&gt;たぶん&lt;/span&gt;)。&lt;br&gt;　あと、モデルファイルを読み込むために X ファイル、または FBX ファイルを別途用意してください。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://yo.wankuma.com/blog/data/2008-02-07_contentpipeline2008_exe.zip"&gt;実行ファイル&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src ="http://blogs.wankuma.com/yo/aggbug/121843.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>オノデラ</dc:creator><title>WPFでのメニューアクセスキー</title><link>http://blogs.wankuma.com/yo/archive/2008/02/05/121155.aspx</link><pubDate>Tue, 05 Feb 2008 12:40:00 GMT</pubDate><guid>http://blogs.wankuma.com/yo/archive/2008/02/05/121155.aspx</guid><wfw:comment>http://blogs.wankuma.com/yo/comments/121155.aspx</wfw:comment><comments>http://blogs.wankuma.com/yo/archive/2008/02/05/121155.aspx#Feedback</comments><slash:comments>34</slash:comments><wfw:commentRss>http://blogs.wankuma.com/yo/comments/commentRss/121155.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/yo/services/trackbacks/121155.aspx</trackback:ping><description>&lt;p&gt;　Windows Form では、メニューなどにアクセスキーを付けるときは「ファイル(&amp;amp;F)」としますが、WPFでは同じように書いてもそのまま「ファイル(&amp;amp;F)」と表示されてしまいます。もちろんFキーを押してもメニューは展開されません。&lt;/p&gt; &lt;p class="CenterPositionArea"&gt;&lt;img height="79" alt="「&amp;amp;」を使った場合の表示" src="http://yo.wankuma.com/blog/uploadimage/WPF_B204/20080205_01.png" width="110" border="0"&gt; &lt;/p&gt; &lt;p&gt;　WPFではアクセスキーを使う場合は「ファイル(_F)」のように「&amp;amp;(&lt;span class="AnnotationText"&gt;アンパサンド&lt;/span&gt;)」の代わりに「_(&lt;span class="AnnotationText"&gt;アンダースコア&lt;/span&gt;)」を使います。すると従来のようにアクセスキーが有効になります。&lt;/p&gt;&lt;pre class="Program"&gt;&amp;lt;&lt;span class="src_typekeyword"&gt;MenuItem&lt;/span&gt; &lt;span class="src_attributename"&gt;Header&lt;/span&gt;=&lt;span class="src_doublequotation"&gt;"ファイル(_F)"&lt;/span&gt; &amp;gt;
    &amp;lt;&lt;span class="src_typekeyword"&gt;MenuItem&lt;/span&gt; &lt;span class="src_attributename"&gt;Header&lt;/span&gt;=&lt;span class="src_doublequotation"&gt;"開く(_O)"&lt;/span&gt; &lt;span class="src_attributename"&gt;Click&lt;/span&gt;=&lt;span class="src_doublequotation"&gt;"MenuItem_Click"&lt;/span&gt; /&amp;gt;
    &amp;lt;&lt;span class="src_typekeyword"&gt;MenuItem&lt;/span&gt; &lt;span class="src_attributename"&gt;Header&lt;/span&gt;=&lt;span class="src_doublequotation"&gt;"終了(_E)"&lt;/span&gt; &lt;span class="src_attributename"&gt;Click&lt;/span&gt;=&lt;span class="src_doublequotation"&gt;"MenuItem_Click_1"&lt;/span&gt; /&amp;gt;
&amp;lt;/&lt;span class="src_typekeyword"&gt;MenuItem&lt;/span&gt;&amp;gt;
&lt;/pre&gt;
&lt;p class="CenterPositionArea"&gt;&lt;img height="116" alt="「_」を使った場合の表示" src="http://yo.wankuma.com/blog/uploadimage/WPF_B204/20080205_02.png" width="109" border="0"&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/yo/aggbug/121155.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>オノデラ</dc:creator><title>WPFウインドウ上にXNAのビューを表示する</title><link>http://blogs.wankuma.com/yo/archive/2008/01/30/119956.aspx</link><pubDate>Wed, 30 Jan 2008 12:48:00 GMT</pubDate><guid>http://blogs.wankuma.com/yo/archive/2008/01/30/119956.aspx</guid><wfw:comment>http://blogs.wankuma.com/yo/comments/119956.aspx</wfw:comment><comments>http://blogs.wankuma.com/yo/archive/2008/01/30/119956.aspx#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://blogs.wankuma.com/yo/comments/commentRss/119956.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/yo/services/trackbacks/119956.aspx</trackback:ping><description>&lt;p&gt;　「&lt;a href="http://blogs.wankuma.com/yo/archive/2008/01/25/119183.aspx"&gt;WPF上でManaged DirectXを使用する&lt;/a&gt;」や「&lt;a href="http://blogs.wankuma.com/yo/archive/2008/01/29/119711.aspx"&gt;WPF上でXNAを使用する&lt;/a&gt;」では &lt;span class="ImportantText"&gt;WindowsFormsHost&lt;/span&gt; コントロールを使用してビューを表示させていましたが、今回は WPF ウインドウのみを使ってポリゴンを表示させてみたいと思います。Managed DirectX も XNA も同じようなコードになるので、今回は XNA Framework の方を使ってみたいと思います。&lt;/p&gt; &lt;p&gt;　下が実行結果です。&lt;/p&gt; &lt;p class="CenterPositionArea"&gt;&lt;img height="300" alt="WPFウインドウ上にXNAのビューを表示する" src="http://yo.wankuma.com/blog/uploadimage/WPFXNA_B3C9/20080130_01.jpg" width="400" border="0"&gt; &lt;/p&gt; &lt;p&gt;　今までと少し作りを変えているので、違う部分を説明していきます。&lt;/p&gt; &lt;h4 class="SectionHeading2"&gt;名前空間エイリアス&lt;/h4&gt;&lt;pre class="Program"&gt;&lt;span class="src_singlelinecomment"&gt;// 名前空間エイリアス&lt;/span&gt;
&lt;span class="src_keyword"&gt;using&lt;/span&gt; Xna = Microsoft.Xna.Framework;
&lt;span class="src_keyword"&gt;using&lt;/span&gt; XnaGraphics = Microsoft.Xna.Framework.Graphics;&lt;/pre&gt;
&lt;p&gt;　&lt;span class="ImportantText"&gt;Color&lt;/span&gt; や &lt;span class="ImportantText"&gt;Matrix&lt;/span&gt; の構造体などが XNA Framework と WPF の名前空間でかぶってしまうため、構造体の名前を使うには名前空間から指定しないといけません。しかし、毎回つけると長ったらしいので名前空間のエイリアスを作成しています。たとえば「&lt;span class="ImportantText"&gt;Microsoft.Xna.Framework.Rectangle&lt;/span&gt;」は「&lt;span class="ImportantText"&gt;Xna,Rectangle&lt;/span&gt;」と指定できるようになります。&lt;/p&gt;
&lt;h4 class="SectionHeading2"&gt;タイマー&lt;/h4&gt;
&lt;p&gt;　.NET Framework 3.0 からは「&lt;span class="ImportantText"&gt;System.Windows.Threading.DispatcherTimer&lt;/span&gt;」というタイマークラスが使えるようになっており、今回このタイマークラスを使って毎フレームレンダリングするようにしています。&lt;span class="ImportantText"&gt;WPF では DispatcherTimer を使うことにより、UI と同じスレッドで処理することができる&lt;/span&gt;ようになっています。&lt;/p&gt;&lt;pre class="Program"&gt;&lt;span class="src_documentcomment"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;span class="src_documentcomment"&gt;/// タイマー&lt;/span&gt;
&lt;span class="src_documentcomment"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;span class="src_keyword"&gt;private&lt;/span&gt; &lt;span class="src_class"&gt;DispatcherTimer&lt;/span&gt; timer = &lt;span class="src_keyword"&gt;null&lt;/span&gt;;
&lt;/pre&gt;
&lt;p&gt;　フィールドで &lt;span class="ImportantText"&gt;DispatcherTimer&lt;/span&gt; を宣言しています。&lt;/p&gt;&lt;pre class="Program"&gt;&lt;span class="src_documentcomment"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;span class="src_documentcomment"&gt;/// タイマーイベント&lt;/span&gt;
&lt;span class="src_documentcomment"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;span class="src_documentcomment"&gt;/// &amp;lt;param name="sender"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="src_documentcomment"&gt;/// &amp;lt;param name="e"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="src_keyword"&gt;private&lt;/span&gt; &lt;span class="src_keyword"&gt;void&lt;/span&gt; dispatcherTimer_Tick(&lt;span class="src_typekeyword"&gt;object&lt;/span&gt; sender, &lt;span class="src_class"&gt;EventArgs&lt;/span&gt; e)
{
    &lt;span class="src_keyword"&gt;this&lt;/span&gt;.Draw();
}
&lt;/pre&gt;
&lt;p&gt;　DispatcherTimer が一定時間ごとに呼ぶメソッドを定義します。&lt;/p&gt;&lt;pre class="Program"&gt;&lt;span class="src_singlelinecomment"&gt;// タイマー&lt;/span&gt;
&lt;span class="src_keyword"&gt;this&lt;/span&gt;.timer = &lt;span class="src_keyword"&gt;new&lt;/span&gt; &lt;span class="src_class"&gt;DispatcherTimer&lt;/span&gt;();
&lt;span class="src_keyword"&gt;this&lt;/span&gt;.timer.Tick += &lt;span class="src_keyword"&gt;new&lt;/span&gt; &lt;span class="src_class"&gt;EventHandler&lt;/span&gt;(dispatcherTimer_Tick);
&lt;span class="src_keyword"&gt;this&lt;/span&gt;.timer.Interval = &lt;span class="src_keyword"&gt;new&lt;/span&gt; &lt;span class="src_class"&gt;TimeSpan&lt;/span&gt;(&lt;span class="src_digit"&gt;0&lt;/span&gt;, &lt;span class="src_digit"&gt;0&lt;/span&gt;, &lt;span class="src_digit"&gt;0&lt;/span&gt;, &lt;span class="src_digit"&gt;0&lt;/span&gt;, &lt;span class="src_digit"&gt;16&lt;/span&gt;);
&lt;span class="src_keyword"&gt;this&lt;/span&gt;.timer.Start();
&lt;/pre&gt;
&lt;p&gt;　タイマーの設定処理です。DispatcherTimer のインスタンスを作成し、コールするメソッドと時間間隔を設定したら、&lt;span class="ImportantText"&gt;DispatcherTimer.Start&lt;/span&gt; メソッドでタイマーが開始します。&lt;/p&gt;
&lt;h4 class="SectionHeading2"&gt;ウインドウハンドルの取得&lt;/h4&gt;
&lt;p&gt;　Direct3D デバイスを作成するにはウインドウハンドルが必要です。しかし WPF ではウインドウハンドルという概念は基本的にないため、Window クラスから直接取得する方法がありません。&lt;/p&gt;
&lt;p&gt;　ただ、今回のようにウインドウハンドルが必要な場合もあるため、Win32 コードの相互運用として「&lt;span class="ImportantText"&gt;System.Windows.Interop.WindowInteropHelper&lt;/span&gt;」クラスを経由してウインドウハンドルを取得できるようになっています。(&lt;span class="AnnotationText"&gt;this は Window クラスです&lt;/span&gt;)&lt;/p&gt;&lt;pre class="Program"&gt;&lt;span class="src_singlelinecomment"&gt;// ウィンドウハンドルを取得する&lt;/span&gt;
&lt;span class="src_class"&gt;IntPtr&lt;/span&gt; handle = &lt;span class="src_keyword"&gt;new&lt;/span&gt; &lt;span class="src_class"&gt;WindowInteropHelper&lt;/span&gt;(&lt;span class="src_keyword"&gt;this&lt;/span&gt;).Handle;
&lt;/pre&gt;
&lt;p&gt;　Direct3D デバイスを作成するときはこのハンドルを使用します。ただ、OnInitialized メソッドでウインドウハンドルを取得しようとすると、ウインドウがまだ作成されていないためか 0 が返ってきます。今回のサンプルではデバイスの作成を OnSourceInitialized メソッドで行っています。&lt;/p&gt;
&lt;h4 class="SectionHeading2"&gt;指定領域にレンダリング&lt;/h4&gt;
&lt;p&gt;　GraphicsDevice.Present の第２引数に描画先の領域を指定することができます。サンプルではオフセットとして(50, 50)の位置に描画するようにしています。サイズはバックバッファのサイズと同じ(300, 300)です。第１引数は描画元の領域で、null を指定すると元のバッファがそのまま使われます。&lt;/p&gt;&lt;pre class="Program"&gt;&lt;span class="src_singlelinecomment"&gt;// 描画先を指定する&lt;/span&gt;
Xna.&lt;span class="src_class"&gt;Rectangle&lt;/span&gt; rect = &lt;span class="src_keyword"&gt;new&lt;/span&gt; Xna.&lt;span class="src_class"&gt;Rectangle&lt;/span&gt;(
    &lt;span class="src_digit"&gt;50&lt;/span&gt;, &lt;span class="src_digit"&gt;50&lt;/span&gt;,
    (&lt;span class="src_typekeyword"&gt;int&lt;/span&gt;)&lt;span class="src_keyword"&gt;this&lt;/span&gt;.viewSize.Width, (&lt;span class="src_typekeyword"&gt;int&lt;/span&gt;)&lt;span class="src_keyword"&gt;this&lt;/span&gt;.viewSize.Height);

&lt;span class="src_keyword"&gt;this&lt;/span&gt;.device.Present(&lt;span class="src_keyword"&gt;null&lt;/span&gt;, rect, &lt;span class="src_keyword"&gt;this&lt;/span&gt;.windowHandle);
&lt;/pre&gt;
&lt;h4 class="SectionHeading2"&gt;デバイスの破棄&lt;/h4&gt;
&lt;p&gt;　ウインドウを閉じたときにデバイスを破棄しています。本来 Dispose メソッドなどで処理したかったのですが、WPF の Window クラスはデフォルトでは IDisposable が継承されていないので、かわりにここに記述しました。&lt;/p&gt;&lt;pre class="Program"&gt;&lt;span class="src_documentcomment"&gt;/// &amp;lt;summary&amp;gt;span class="src_documentcomment"&amp;gt;
/// ウインドウが閉じたとき&lt;/span&gt;
&lt;span class="src_documentcomment"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;span class="src_documentcomment"&gt;/// &amp;lt;param name="e"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="src_keyword"&gt;protected&lt;/span&gt; &lt;span class="src_keyword"&gt;override&lt;/span&gt; &lt;span class="src_keyword"&gt;void&lt;/span&gt; OnClosed(&lt;span class="src_class"&gt;EventArgs&lt;/span&gt; e)
{
    &lt;span class="src_keyword"&gt;if&lt;/span&gt; (&lt;span class="src_keyword"&gt;this&lt;/span&gt;.device != &lt;span class="src_keyword"&gt;null&lt;/span&gt;)
    {
        &lt;span class="src_keyword"&gt;this&lt;/span&gt;.device.Dispose();
        &lt;span class="src_keyword"&gt;this&lt;/span&gt;.device = &lt;span class="src_keyword"&gt;null&lt;/span&gt;;
    }

    &lt;span class="src_keyword"&gt;base&lt;/span&gt;.OnClosed(e);
}
&lt;/pre&gt;
&lt;h4 class="SectionHeading2"&gt;実行&lt;/h4&gt;
&lt;p&gt;　サンプルプログラムを実行すると、記事の最初のほうに画面イメージで実行することができます。&lt;/p&gt;
&lt;p&gt;　一見うまくレンダリングされていますが、マウスでウインドウのサイズをドラッグで変更すると、サイズ変更中にビューがちらついたり非表示になったりします。どうも WPF のレンダリングと競合しているようで、いろいろ試してみたのですが解決できませんでした。&lt;/p&gt;
&lt;p&gt;　XNA や Managed DirectX を使う場合は WindowsFormsHost コントロールを使ったほうが無難なような気がします。&lt;/p&gt;
&lt;h3 class="SectionHeading1"&gt;配布ファイル&lt;/h3&gt;
&lt;p&gt;　以下、実行ファイルです。「&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=333325fd-ae52-4e35-b531-508d977d32a6&amp;amp;DisplayLang=ja"&gt;.NET Framework 3.0&lt;/a&gt;」と「&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=2da43d38-db71-4c1b-bc6a-9b6652cd92a3&amp;amp;DisplayLang=ja"&gt;最新の DirectX ランタイム&lt;/a&gt;」「&lt;a href="http://go.microsoft.com/fwlink/?LinkID=78244&amp;amp;clcid=0x409"&gt;Microsoft XNA Framework Redistributable 2.0&lt;/a&gt;」が必要です。また、ハードウェア要件として「&lt;span class="ImportantText"&gt;シェーダモデルバージョン 1.1 以上に対応したグラフィックカード&lt;/span&gt;」が必要です(&lt;span class="AnnotationText"&gt;たぶん&lt;/span&gt;)。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://yo.wankuma.com/blog/data/2008-01-28_xnaonwpf_exe.zip"&gt;実行ファイル&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;　サンプルプロジェクト一式です。「Visual Studio 2008 Professional Edition」で作成しています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://yo.wankuma.com/blog/data/2008-01-28_xnaonwpf_project.zip"&gt;プロジェクト&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src ="http://blogs.wankuma.com/yo/aggbug/119956.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>