WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/12/27(日) 10:58:30て語るスレ。.NET3.5 SP1 もリリースされて盛り上がってまいりますた。
Visual Studio 2008
ttp://www.microsoft.com/japan/msdn/vstudio/
Microsoft .NET Framework 3.5 Service Pack 1
ttp://www.microsoft.com/downloads/details.aspx?FamilyId=AB99342F-5D1A-413D-8319-81DA479AB0D7&displaylang=ja
WPF Toolkit - June 2009 Release
ttp://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29117
Visual Studio 2010
ttp://www.microsoft.com/japan/msdn/vstudio/2010/overview/
関連スレ
Microsoft Silverlight その4
ttp://pc12.2ch.net/test/read.cgi/tech/1244812356/
過去スレ
WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
ttp://pc12.2ch.net/test/read.cgi/tech/1245384489/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
ttp://pc12.2ch.net/test/read.cgi/tech/1231506876/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング
ttp://pc11.2ch.net/test/read.cgi/tech/1211453941/
【新GUI FW】WPF(XAML,AVALON,.NET3.0)【重い?】
ttp://pc11.2ch.net/test/read.cgi/tech/1162950198/
0528デフォルトの名無しさん
2010/04/14(水) 13:52:27XAMLなんて誰が考えたんだ?
こんなソース読む気も書く気もしねー
0529デフォルトの名無しさん
2010/04/14(水) 13:58:43ただ、凡人の限界を知らなかったらしい
0530デフォルトの名無しさん
2010/04/14(水) 14:02:340531デフォルトの名無しさん
2010/04/14(水) 15:10:290532デフォルトの名無しさん
2010/04/14(水) 15:45:31Xamlコードを出力するツールをまず自作しなきゃな。
blend?高いしイラネ
0533デフォルトの名無しさん
2010/04/14(水) 17:04:29まあなんとかいうモデリングソフトで書いてxaml出力してもいいけどね
0534デフォルトの名無しさん
2010/04/14(水) 18:41:57> 2 次元から抜け出そう
心にぐさりと来ました
0535デフォルトの名無しさん
2010/04/14(水) 19:02:310536デフォルトの名無しさん
2010/04/14(水) 20:04:03そのためのXMLだ
0537デフォルトの名無しさん
2010/04/14(水) 20:15:00わざわざ手かせ足かせを嵌めて走る意味はなかろう。
0538デフォルトの名無しさん
2010/04/14(水) 20:59:43を使っている方は少ないと思いますが、
「これが原因じゃない?」程度でも構いませんので
何か思い当たることがありましたら、お願いします。
■質問内容
以下の2つの方法で、挙動がことなります。
1) xmalで Button を配置して Click イベントを与えたもの
2) csファイルに Button b = new Button(); b.Click += new RoutedEventHandler(hoge);
として Click イベントを与えたもの
■挙動
1) Win7+タッチ対応ディスプレイにて、タッチでも Click が反応します
2) Win7+タッチ対応ディスプレイにて、タッチでは Click が反応しません
ButtonをManipulationで操作したいため、TouchUp などは使えません。
ボタンの Click イベントを 2) の方法で生成した Button に対して適用したい
のですが、どのようにしたら良いかアイデアが思いつく方、お願いいたします。
0539デフォルトの名無しさん
2010/04/14(水) 23:46:110540デフォルトの名無しさん
2010/04/15(木) 00:01:33ManipulationではなくMouseMoveで
操作しろということでしょうか?
0541デフォルトの名無しさん
2010/04/15(木) 07:51:03Direct3Dとか少ししか触ってないので見当違いなこと言ってたらすまん。
1.UIElementツリー
2.Direct3DのVertexBufferとかMesh
3.実際の出力
WPFは主に1の画面要素自体とイベントなどのハンドリング、状態通知でごにょごにょとなどとそれらを2に反映させるものだと思ってるんだが、
1自体が重いのか1から2への変換などが重いのか?
2,3とかは高速なんだろうし、現状では削りようのないところなんだろうけれど。
たとえば画面のボタンの背景色を変えた場合は内部でどんな動作になるんざんしょ。
0542デフォルトの名無しさん
2010/04/15(木) 08:03:57ちなみに1と2の間にはもう一つ層がある
Direct3DをGUI向けにラップしたネイティブコードのライブラリを使ってる
0543デフォルトの名無しさん
2010/04/15(木) 10:08:430544デフォルトの名無しさん
2010/04/15(木) 21:06:10オススメの文献とかありませんか?
0545デフォルトの名無しさん
2010/04/15(木) 21:33:450546デフォルトの名無しさん
2010/04/15(木) 21:40:070547デフォルトの名無しさん
2010/04/15(木) 21:40:59ですが、格闘ゲームに限らず、
WPFでのゲームプログラミングの情報自体が見つけられなかったので、
ほかのジャンルの情報でも充分助かります。
0548デフォルトの名無しさん
2010/04/15(木) 21:47:43ギャルゲーでビデオカード要求とかあり得ないんでギャルゲーでは主流になってもいいと思います。
0549デフォルトの名無しさん
2010/04/15(木) 21:50:220550デフォルトの名無しさん
2010/04/15(木) 21:58:28「エッセンシャル WPF」
「XAML プログラミング WPFアプリケーションの概要と開発」
このスレではこの2冊がそこそこ評判が良かった。
もし英語に抵抗が無ければ出版数が多い洋書で探した方が良いかと。
個人的には書籍じゃないけどMSDNのサンプルが一番役に立ったよ。
WPFでゲームを作ってる人は少ないだろうなあ。
DirectXかXNAを使った方が良いと思うんだけど。
0551デフォルトの名無しさん
2010/04/15(木) 22:29:22だいたい用は足りると思う
0552デフォルトの名無しさん
2010/04/16(金) 00:11:31ということをXMALではなくC#のコードから実現したいです。
ネタとしては、ここの質問のC#版です。
質問内容を理解しないでXAMLの話をする回答者が多いみたいですが。
ttp://bbs.wankuma.com/index.cgi?mode=al2&namber=38523&KLOG=66
プログラム内で動的にButtonを配置したいため、
XAMLではなくC#から生成したいのです。
画像の情報も動的に取得するので、画像もC#で生成したいです。
(実際には、画像のパスを動的に取得し、そのパスからImageを生成)
ググってもXAMLの話ばかりです。よろしくお願いします。
0553デフォルトの名無しさん
2010/04/16(金) 00:23:240554デフォルトの名無しさん
2010/04/16(金) 01:45:52そうですか
>質問内容を理解しないでXAMLの話をする回答者が多いみたいですが。
そうですか
>XAMLではなくC#から生成したいのです。
そうですか
>画像の情報も動的に取得するので、画像もC#で生成したいです。
そうですか
>ググってもXAMLの話ばかりです。よろしくお願いします。
なにをよろしくですか
0555デフォルトの名無しさん
2010/04/16(金) 01:48:3338526の回答以外のなにものでもないよ
質問内容を理解しないんじゃなくて、回答読んでも理解できない脳みそを恨め
0556デフォルトの名無しさん
2010/04/16(金) 02:02:05中身の無いレスだな
お前みたいなのは来なくて良いよ
0557デフォルトの名無しさん
2010/04/16(金) 02:11:34これがどれだけ程度の低い質問かわかんないってことは本人だろうな・・・
0558552
2010/04/16(金) 02:19:45ありがとうございます。
UserControlなるものを使ったことが無いので
早速調べてみます。
>>554-555
38526がコードの話をしていることは分かっています。
>XAMLの話をする回答者が多いみたいですが。
と書いているのは、それを示しています。
38526の回等と>>553氏のレスが同値だと分かるレスを
していただき、ありがとうございます。
>>556
555のレスから得たことがありますので大丈夫です。
>>557
552は私です。
UserControlの話など、もっと汎用的な調べ方をすれば
沢山情報が得られるのかもしれませんが、具体的な事例が
あまりないというのは、それだけ壊滅的なほどに初歩的ということなのですね。
もっと勉強します。ありがとうございました。
0559デフォルトの名無しさん
2010/04/16(金) 02:20:54は?程度の低さは関係ないだろ
どれだけ馬鹿なんだよ
0560デフォルトの名無しさん
2010/04/16(金) 02:21:32違うよ
ButtonオブジェクトのContentプロパティにImageオブジェクト突っ込めばいいだけ
0561デフォルトの名無しさん
2010/04/16(金) 02:22:47はいはい
お前が気の済むように回答してやれよ
0562デフォルトの名無しさん
2010/04/16(金) 02:29:42>はいはい
え?マジで分かってないの?
こりゃ重症だな。関わらないでおくよ。
>お前が気の済むように回答してやれよ
うわーまいったねこりゃ。
既に解答が出ているのに更に回答しろと?
別の機会に謹んで回答させていただきますw
0563デフォルトの名無しさん
2010/04/16(金) 02:32:36中身の無いレスだな
以下略
0564558
2010/04/16(金) 02:55:46お恥ずかしいです。ありがとうございます。
質問をする前にスレを見返していましたが、
人を馬鹿にするレスしかしない人が多い中、
あきれずに回答していただきありがとうございました。
0565デフォルトの名無しさん
2010/04/16(金) 06:49:02なんで未知の言語なのにチュートリアルすっとばそうとするかな。
別にすっとばしてもいいけどひとりで悩んでくれよ。ひとのせいにすんな。
0566デフォルトの名無しさん
2010/04/16(金) 07:26:490567デフォルトの名無しさん
2010/04/16(金) 07:51:10おおむね同意だが
>ひとのせいにすんな。
これってどこを見て感じたことなんだ?
なぜこう感じたのか、俺には全く分からんのだが。
0568デフォルトの名無しさん
2010/04/16(金) 11:50:17http://www.microsoft.com/expression/products/Blend4RC_Features.aspx
めぼしい機能追加はピクセルシェーダくらいじゃないのかな
あとはギャラリーで公開してくれれば済むような追加しかないような
0569デフォルトの名無しさん
2010/04/16(金) 11:59:390570デフォルトの名無しさん
2010/04/16(金) 12:02:40>>552
>質問内容を理解しないでXAMLの話をする回答者が多いみたいですが。
XAML ←→ C#コード なんか、ボタンやイメージどうこう以前に WPF の基礎だから。
自分の無知を棚上げに「理解しないで」などと回答者をアホ扱いするから荒れる訳。
「M女史の遺したもの」を一回は読んでおくといいよ。
public Window1()
{
InitializeComponent();
this.Content = new Button { Content = new Image { Source = new BitmapImage(new Uri("c:\\image\\test.bmp", UriKind.Absolute)) } };
}
0571デフォルトの名無しさん
2010/04/16(金) 14:07:51→「はー?なんでうごかねーんだよこの欠陥言語。おいくずどもどうなってるか説明しろ!」
ようするにこういう思考だろ。
「なんでおれがこんな低レベル言語にてこずらなきゃならないんだよ」みたいな
雰囲気ぷんぷんさせながら質問するとか鼻で笑うわ
0572デフォルトの名無しさん
2010/04/16(金) 22:21:44> ということをXMALではなくC#のコードから実現したいです。
キチ○イwww
0573デフォルトの名無しさん
2010/04/17(土) 00:01:45へーこんな書き方できるんだ
はじめて知った。
>>571
お前みたいに"決め付ける"人って
大抵・・・
0574デフォルトの名無しさん
2010/04/18(日) 09:50:13WinFormsでそうやってたようなことはアイテムテンプレート使えばだいたいXAMLだけで完結する
0575デフォルトの名無しさん
2010/04/18(日) 13:18:150576デフォルトの名無しさん
2010/04/18(日) 14:52:46プロパティの指定はXAMLコードから判るが、メンバの設定は何度読んでも混乱する。
0577デフォルトの名無しさん
2010/04/19(月) 22:05:41Core2 E7400 + GeForce9400GT でも若干ガクガクするんだけど
WPFってそんなもんなの?
それとも、うまい書き方があるの?
RectangleはXAMLで配置して、AnimationはC#内で書いてるんだけど。
0578デフォルトの名無しさん
2010/04/19(月) 22:18:56間違ってもDrawingContextは使わないように
0579577
2010/04/19(月) 23:12:18ありがとう、調べてみた。
これってアニメーションできないように思うんだけど
そんなことないの?
イベントとかは使わないから描画だけといえばそうなんだけど。
20個(できればそれ以上)のRectangle、長い長方形をぐるぐる回したいんだよね。
風車がたくさん立っているイメージ。
0580デフォルトの名無しさん
2010/04/20(火) 00:46:030581デフォルトの名無しさん
2010/04/20(火) 00:47:39そういうのはGPUが得意なんだがな・・・
0582デフォルトの名無しさん
2010/04/20(火) 00:49:14けちらずエッセンシャル買え
0583デフォルトの名無しさん
2010/04/20(火) 01:35:21その程度のアニメーションなら普通にStoryboardじゃいかんの?
0584デフォルトの名無しさん
2010/04/20(火) 12:27:39RenderTransform使ってみるとか
0585デフォルトの名無しさん
2010/04/21(水) 11:11:040586デフォルトの名無しさん
2010/04/21(水) 12:11:56必要に応じて自分で作るんだよ
0587デフォルトの名無しさん
2010/04/21(水) 12:19:100588デフォルトの名無しさん
2010/04/21(水) 15:06:02面白い比較の記事を見つけた。
こういうのを探していたんだ。
終わりの方の比較のところね。
0589デフォルトの名無しさん
2010/04/21(水) 21:53:09標準で用意しときゃいいのにとはおもったわ。
0590デフォルトの名無しさん
2010/04/21(水) 22:00:520591デフォルトの名無しさん
2010/04/21(水) 22:26:42使えないのはどうして?
MSDNでは「WPF の添付プロパティには、get および set のアクセスを容易にするための
標準的な CLR "ラッパー" メソッドはありません。
これは、添付プロパティが設定されたインスタンスの CLR 名前空間に、
その添付プロパティが属しているとは限らないからです。」
って書いてあったけど。つまり・・・どういうことだってばよ
0592デフォルトの名無しさん
2010/04/21(水) 22:33:09プロパティ構文じゃ書けないよってこと
0593デフォルトの名無しさん
2010/04/21(水) 22:33:59そのプロパティの値を実際に持つのはCanvasの中に追加する他のクラスのインスタンスだろ
CLRプロパティではプロパティが定義されてるクラスとその値を持つインスタンスのクラスは必ず一致するけど
添付プロパティでは一致しないからCLRプロパティでは表現できない
0594デフォルトの名無しさん
2010/04/21(水) 22:39:53ラッパーを静的にする必要はあるけど、コードからでも普通に使えそうだけどなあ。
0595デフォルトの名無しさん
2010/04/21(水) 22:42:440596デフォルトの名無しさん
2010/04/21(水) 22:44:03ということになって結局Canvas.GetLeft(obj)で十全だろ、分かりやすいし
0597デフォルトの名無しさん
2010/04/21(水) 22:48:49なっとく
0598デフォルトの名無しさん
2010/04/21(水) 23:04:200599デフォルトの名無しさん
2010/04/21(水) 23:06:010600デフォルトの名無しさん
2010/04/21(水) 23:15:27obj[Canvas.LeftProperty]にせざるを得ないからなぁ objectでしか扱えないし
それ以上は言語の方に手を入れなきゃなんなくなる
いや、dynamicでなんとかなる・・・か? しないで良いけど
0601デフォルトの名無しさん
2010/04/21(水) 23:20:150602デフォルトの名無しさん
2010/04/21(水) 23:50:230603デフォルトの名無しさん
2010/04/22(木) 02:50:170604デフォルトの名無しさん
2010/04/22(木) 06:57:38これがおのぞみのかな?
XamlPadを作ってみた。
http://pro.art55.jp/?eid=863237
0605デフォルトの名無しさん
2010/04/22(木) 07:42:46それリアルタイムでの編集内容反映は入ってないよね?
0606デフォルトの名無しさん
2010/04/22(木) 21:28:40おー、意外にシンプルでびっくり。さんくす
>>605
更新タイミングは工夫次第でいけそう。
0607デフォルトの名無しさん
2010/04/22(木) 23:02:070608デフォルトの名無しさん
2010/04/22(木) 23:26:42window1の中のある領域に X を配置して、
その X の中を右方向にアニメーションさせた場合、
X の右端がXの左端にくっついたように
ずっと X がループされてスライドするアニメーションって
どうやったらできますか?
ここで X とは、CanvasでもPageでも何でもよいので、
ボタンとかラジオボタンとかが配置できる領域のことです。
説明が難しいのですが、例えば window1 に電車を描き、
電車の窓から X (外の景色) を眺めているとし、外の景色が
ずっとスライドしていく感じです。
このとき、X に動的に「電柱」の絵を置いたら、ループ絵として
次に現れる X にも「電柱」が存在するように見せたいです。
0609デフォルトの名無しさん
2010/04/22(木) 23:36:590610デフォルトの名無しさん
2010/04/22(木) 23:40:120611デフォルトの名無しさん
2010/04/23(金) 00:01:30ありがとうございます。ですが、それだと絵が切れてしまいます。
窓の大きさが X と同じで、動かす絵が X の場合、
X を右にスライドさせると、Xの左側が空白になります。
X1 X2 と Xを並べて、X2がXの領域からはずれたら X1 の左に
配置するようにすれば実現できますが、そうすると X1 と X2 が
同じものになりません。X1に電柱が追加されたらX2にも追加、となると
処理が重たくなりますので・・・。
>>610
ありがとうございます。
そちらの方法で、チカチカさせない方法があるのでしょうか??
0612デフォルトの名無しさん
2010/04/23(金) 00:08:20まあ>>610の方法はゲームの一般的なループの作り方なだけで
そのまんまはだめかもしれないけどねw
なるべく再利用した方がいいかと思って>>610として書いたけど
ちらついたりするならとりあえずは1つのファイルを内部で2つ同じものを作って
とかはだめ?
0613デフォルトの名無しさん
2010/04/23(金) 00:11:20同じ物を2枚並べた横長で作っておいて座標で調整するか
0614デフォルトの名無しさん
2010/04/23(金) 00:13:10これが標準のフレームワークってことになんのかしら
0615デフォルトの名無しさん
2010/04/23(金) 00:14:55やはり冗長な部分を作って
必要な部分だけ見せるのが手っ取り早いみたいですね。
なるべくなら再利用したいのですが、ひとまず↑でやってみます。
では、失礼します。
0616デフォルトの名無しさん
2010/04/23(金) 00:25:33画像をTile指定で表示してやれば自動的に繰り返しになる。
あとはViewportを動かしてやればいい。
ttp://www7a.biglobe.ne.jp/~fbsoft/test/miku1.cgi
0617デフォルトの名無しさん
2010/04/23(金) 00:31:51ttp://codepad.org/jGnPpTxR
0618デフォルトの名無しさん
2010/04/23(金) 00:43:03おぉ、このようなものもあるのですね。
寝る前に見て良かったです。
ざざっと調べてみたのですが、こちらの方法では
画像を複製表示することはできるようですが、
Buttonなどが配置されたPage(を配置したFrameなど)を
複製表示させることはできないみたいですね。
(調べ方が甘かったらすみません)
教えていただいた TileMode で絵を複製して、
Buttonなどは自分で複数配置する方法も検討してみます。
0619618
2010/04/23(金) 00:55:24TileMode から色々と調べてみましたが、
Canvas Neme="canvas1"
にボタンなどを配置し、
<Rectangle ... >
<Rectangle.Fill>
<VirualBrush Visual={Binling element=canvas1}" />
</Rectangle.Fill>
</Rectangle>
とすると、一応 Button なども複製されますね。
しかし(当然ですが)複製された絵の Button は操作できませんね。
残念です。
0620デフォルトの名無しさん
2010/04/23(金) 01:19:32動いてないときは普通に表示して、
スライド中だけVirtualBrushに入れ替えればいいんじゃない。
0621デフォルトの名無しさん
2010/04/23(金) 01:36:50移動中でもクリックに反応して欲しいんです。
0622デフォルトの名無しさん
2010/04/23(金) 02:09:47クリッピングと組み合わせて実現するのが常套じゃないのかな
0623デフォルトの名無しさん
2010/04/23(金) 04:11:30自分ですこしは考えなよ
0624デフォルトの名無しさん
2010/04/23(金) 06:47:11そういうことは2ch言ってもしかたないと思うんだぜ
0625デフォルトの名無しさん
2010/04/23(金) 07:47:11>>619では「考えている」認定されないのか。
2chって厳しいインターネットなんだなw
0626デフォルトの名無しさん
2010/04/23(金) 14:20:14自分の望むことをコードにすることはできるだろう、諦める=考えてない、ってことさ
0627デフォルトの名無しさん
2010/04/23(金) 18:38:39LineHightやMarginを試してみても変わらなかった
0628デフォルトの名無しさん
2010/04/23(金) 18:39:55■ このスレッドは過去ログ倉庫に格納されています