トップページtech
1001コメント282KB

WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2009/12/27(日) 10:58:30
あたらしいユーザーインターフェースシステム、Windows Presentation Frameworkについ
て語るスレ。.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/
0451デフォルトの名無しさん2010/03/28(日) 02:42:38
WPF覚える前に検索方法覚えたほうがいいんじゃね

検索キーワード聞かなきゃ検索できないとか冗談にもならないレベルだよ
0452デフォルトの名無しさん2010/03/28(日) 09:35:00
いやいや何言ってんだ・・・キーワード知らなきゃ検索出来んだろ普通。
0453デフォルトの名無しさん2010/03/28(日) 10:41:34
>>439
大漁でしたね
0454デフォルトの名無しさん2010/03/28(日) 12:24:39
google入門とか読めよ。

簡単に言うと、自分が思いつくいちばん近いキーワードで検索してページを読んで
もっと近そうなキーワードを見つけていくんだよ。誰でもできるだろ? やれ。
04554392010/03/28(日) 14:13:30
ネットはテレホーダイの時代以前から触っているので
それなりに検索術はあると思っていますが
皆さんの反応を見る限り、そうではなかったようです。

>>454氏の書き込んでいることはもはや当然のことで、
かれこれ3週間MSDNやらcode projectやらブログやらを
探っていますが、解に到達できていません。
その上で質問に来ています。

が、経験上、この流れになったが最後、
これ以上の情報をこのスレで得ることは困難なため
大人しく身を引きます。ありがとうございました。


>>453
遊びではありません。
0456デフォルトの名無しさん2010/03/28(日) 14:38:44
傲慢過ぎワラタ こんな捨て台詞数年ぶりに見たわ
0457デフォルトの名無しさん2010/03/28(日) 16:01:23
そうか?俺も他スレで同じ経験すること多いぞ
技術的な他分野ってこんなもんだろ
0458デフォルトの名無しさん2010/03/28(日) 16:06:43
無駄にプライド高いのに教えを乞うからだよ。

希望の機能ならライブラリにメソッドがちゃんと用意されてるよ。
遊びじゃないなら3週間給料泥棒だったね。
0459デフォルトの名無しさん2010/03/28(日) 16:09:21
今質問すると、ググレカスで一蹴されそうだが
width, height を Auto にして Stretch にすると
たとえば Name="canvas1"のCanvasに対して
int w = (int)(canvas1.Width);
としても w に変な値が入ってしまう。

// HeightとWidthはあくまで開発者がデザイン時に設定した値

ということは分かったのだが、
ではどうやって値を取得するのかが分からん。

canvas1.RenderSize.Width
canvas1.ActualWidth
とか調べても分からん。

windowサイズの拡縮に合わせて変化する canvas の
縦横を取得するにはどうすれば良いの?

# VC#2008, WPF3.5SP1
0460デフォルトの名無しさん2010/03/28(日) 16:15:53
ActualWidth/ActualHeightでいいはずだが?
「調べても分からん」?「確認したけど期待した値じゃない」じゃなくて?
0461デフォルトの名無しさん2010/03/28(日) 16:17:37
計算される前に呼んでるんだろ
04624592010/03/28(日) 16:20:36
>>460
>「確認したけど期待した値じゃない」じゃなくて?
そうでした。すまん。
なんか 0 が返ってくる。

>>461
・・・ビンゴな気がする。
Invalidatなんたらを実行してからとか
そんなのですかね。色々試してみる。

お二方ありがとうノシ
0463デフォルトの名無しさん2010/03/28(日) 16:35:23
ggrks
04644592010/03/28(日) 16:42:19
何を血迷ったか、WinMain() の中で呼んでいたよ orz
Window_Loaded() の中で呼んだら、期待した値が来ました。
本当にありがとうございました。
0465デフォルトの名無しさん2010/03/28(日) 18:09:57
>>464
いいってことよ
0466デフォルトの名無しさん2010/03/28(日) 18:44:24
おまえら質問のしかたで反応が違いすぎ
0467デフォルトの名無しさん2010/03/28(日) 18:54:47
いや普通そうだろ
0468デフォルトの名無しさん2010/03/28(日) 18:56:06
>>466
普通そうです
0469デフォルトの名無しさん2010/03/28(日) 18:57:59
私は女子中学生だけどそれが普通だと思います。
0470デフォルトの名無しさん2010/03/28(日) 19:02:41
「自分のしたいことが明確にわかっている」のが質問の最低条件だから。
ここコミュ力試験に出るよ。
0471デフォルトの名無しさん2010/03/28(日) 19:07:14
エスパーじゃないからな

でも初めてのことだとたまにエスパーして欲しいことはあるな

そういうときは答えをもらおうとせずもらえそうなところに愚痴っておくといい

たまーにヒントがもらえるから
0472デフォルトの名無しさん2010/03/28(日) 19:26:58
>>470
あと「回答すべきことを明確に伝えれる」「必要なことは書き余分なことは書かない」も重要。

「ネットはテレホーダイの時代以前から触っているので」とか
歯に詰まったクラッカーのカスほどの価値もないことを書いて
自分が調べたキーワードがどういうものかもかかない奴には当然冷たい。
0473デフォルトの名無しさん2010/03/28(日) 20:01:39
>>459
最初の一行が効いたな
0474デフォルトの名無しさん2010/03/28(日) 20:03:03
>>472
おまえはテレホマンの魂を侮辱した!
0475デフォルトの名無しさん2010/03/28(日) 20:17:42
しかしネットで難解なドキュメントやマニアックなブログ見るよりも
ビギナー向けのXAML入門書読んだほうが早いような気もするが
0476デフォルトの名無しさん2010/03/28(日) 20:34:18
普段、難解なことを扱っているんだろ。
入門書で分かるレベルのことであっても
いつも通りの調べ方をしてしまったんだろな。
それ故にプライドも高い。
0477デフォルトの名無しさん2010/03/28(日) 20:44:19
スレチ
0478デフォルトの名無しさん2010/03/28(日) 20:44:23
WPFで、マウスポインタがディスプレイの端を触った時に
発生するイベントってありますか?

現状では、以下の2通りの方法で何とか実現していますが
美しくありません。

1) DispathderTimer を使う
 ・ System.Windows.Forms を参照
 ・ timer で定期的に呼ばれる関数内で Cursor.Position.X, Y を取得し
  予め取得しておいた、解像度の情報と X, Y を比較して判定
問題点:タイマーを設けることで常に関数が呼ばれることになる

2) 透明の Rectangle などを置いて、MouseEnter で判定
 ・そのままです。
問題点:問題と言うか、美しくないです。

もしあるようでしたら、ご教授願いたいです。
よろしくお願いします。
0479デフォルトの名無しさん2010/03/28(日) 20:55:04
2)は美しくなくない
0480デフォルトの名無しさん2010/03/28(日) 20:55:39
MouseMoveイベントと
http://www.atmarkit.co.jp/fdotnet/dotnettips/003screen/screen.html
を組み合わせてみては?
04814782010/03/28(日) 21:11:57
>>479
美しくなくないですか。
例えば市場に出すアプリを組んでいるプロ?の方でも
こういった力技で解決するのでしょうか。

>>480
あぁーなるほど。MouseMoveですか。盲点でした。
座標比較が頻繁に行われることに違いはありませんが、
timerよりかは遥かに良い方法ですね。


以下、つぶやきです。
1)の方法でも、OSは定期的に MouseEnter しているのか
判定しているのでしょうかね。それなら1)も2)も処理量は
大差ないかもしれません。が、仮定の話なので無駄ですね。
0482デフォルトの名無しさん2010/03/28(日) 21:19:33
マウスポインタがある領域に入ったってイベントが欲しいわけでしょ
正しい実装じゃん
力技じゃない
0483デフォルトの名無しさん2010/03/28(日) 21:21:40
タイマで処理するにしてもそれぐらいカスみたいなコスト
04844782010/03/28(日) 21:21:56
>>482
なるほど、考えを改めます。
ありがとうございました。
0485デフォルトの名無しさん2010/03/29(月) 21:53:38
Blendでコードビハインドべったりで書いていくと簡単だったりするんだよなwpf
昔のVBと大して変わんないってくらい
0486デフォルトの名無しさん2010/03/30(火) 08:02:13
macで使われてるGUIのボタンってなんっていいましたっけ・・・
あれを再現は可能ですか?
0487デフォルトの名無しさん2010/03/30(火) 09:03:01
Dockか?
そりゃWPFはまさにああいうことをやるためのフレームワークだから
0488デフォルトの名無しさん2010/03/30(火) 10:29:01
aquaのことじゃないの
0489デフォルトの名無しさん2010/03/30(火) 13:00:22
ボタンの見栄えを自由にするなんてのはお手のもんでしょうな。
別にFormで出来なかったわけでもないけど。
0490デフォルトの名無しさん2010/03/30(火) 21:11:48
WPF Themesにいろいろ綺麗なテーマがあるよ
Macの真似みたいな貧乏臭いことはやめてくれ
0491デフォルトの名無しさん2010/03/31(水) 22:27:14
WPFで3Dグラフィックの仕事をやることになったんだが、皆目見当がつきません。
何か良い本は無いでしょうか。
0492デフォルトの名無しさん2010/03/31(水) 22:46:11
まずは、Essential WPF。後は英語でググレ。
0493デフォルトの名無しさん2010/03/31(水) 23:18:18
そんなもん読んでるに決まってるだろ。
他に無いでしょうか。
0494デフォルトの名無しさん2010/03/31(水) 23:28:13
だれか何かを挙げる→そんなもん読んでるに決まってるだろ→
だれか何かを挙げる→そんなもん読んでるに決まってるだろ→
だれか何かを挙げる→そんなもん読んでるに決まってるだろ→(ry

まぁ、挙げるだけ無駄ってことだなw
0495デフォルトの名無しさん2010/03/31(水) 23:45:33
返答してる人が同一人物である保証すらないしな。
0496デフォルトの名無しさん2010/03/31(水) 23:51:02
idほしいお・・・
0497デフォルトの名無しさん2010/04/01(木) 00:12:50
3D PROGRAMMING FOR WINDOWS
0498デフォルトの名無しさん2010/04/01(木) 07:31:59
WPF 3Dプログラミング―誰でも簡単に3Dゲームやツールが作れる最新技術!
0499デフォルトの名無しさん2010/04/01(木) 11:24:40
WPFによる3Dプログラミングの極意 (民明書房)
0500デフォルトの名無しさん2010/04/01(木) 14:45:12
質問かいてたら答えが見つかったけどもったいないのカキコ

HTMLのMarquee的な動作をするテキストブロックを作ろうと

<Canvas>
  <TextBlock 〜>
</Canvas>

としておいて、
下記のように添付プロパティのCanvas.Leftをアニメーションさせています。

<Storyboard x:Key="test" RepeatBehavior="Forever">
  <DoubleAnimation
    From="1"
    To="100"
    Duration="0:0:10"
    Storyboard.TargetName="textBlock1"
    Storyboard.TargetProperty="(Canvas.Left)"/> <!-- ←なんで括弧が必要? -->
</Storyboard>

括弧がなぜ必要なのか教えてください。
ひょっとして拡張部分のそういう仕様ですか?

仕様でした><
0501デフォルトの名無しさん2010/04/01(木) 21:45:22
GJ
0502デフォルトの名無しさん2010/04/01(木) 22:58:08
Canvas canvas1
Ellipse elli1, elli2

ああるとして

canvas1.Children.Add(elli1);
canvas1.Children.Add(elli2);

とした後に

elli2 だけ Clear することってどうやれば良いんですか?
0503デフォルトの名無しさん2010/04/01(木) 23:01:24
Remove
0504デフォルトの名無しさん2010/04/01(木) 23:07:15
>>503
あ・・・ありがとう。
なんで見つからなかったんだろう。
0505デフォルトの名無しさん2010/04/02(金) 04:26:05
>>491
Practical WPF Graphics Programming
この本なんかはどう?
0506デフォルトの名無しさん2010/04/02(金) 07:52:30
>505
ttp://www.free-ebooks-download.org/free-ebook/dotnet/Framework/practical-wpf-graphics-programming.php

なんかあったがなんかいろいろばら撒く気満載泣きガス・・・
とりあえずダウンロードはできた。中身もあってるっぽいが・・・
0507デフォルトの名無しさん2010/04/02(金) 09:09:51
最近Freeに影響されたかバラ撒くとこ増えたねえ。
それとも欧米では結構昔からこういうことするとこ多かったのかな?
0508デフォルトの名無しさん2010/04/02(金) 09:55:54
ローマ字変数名しか使えない俺には無用
0509デフォルトの名無しさん2010/04/02(金) 10:16:55
少なくともWPFに関する本はほぼすべてネットで拾えてしまうからなあ。
実に由々しき事態だ。(棒)
0510デフォルトの名無しさん2010/04/02(金) 10:19:12
ちょっと目を通してみたけどWPFの本というよりグラフィックスの基礎の本だなあ
普通は可視化にOpenGLとか使うところをたまたまWPF使ってるだけな感じ
0511デフォルトの名無しさん2010/04/04(日) 22:14:21
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/717excelfile/excelfile.html
こちらを参考にしてWPFにExcelファイルを読み込まれるまではできたのですが、
これをWPFコントロールにそのまま表示させることって出来ないのでしょうか。

セルの1つひとつの情報を取ることはできるので
Gridをひいてセルを写すことは可能なのですが、
Excelの表をそのままWPFのwindowに表示させたいのです。

それとも、セルから全部コピーしないとダメなのでしょうか?
0512デフォルトの名無しさん2010/04/05(月) 01:03:51
>WPFにExcelファイルを読み込まれる
たぶんもうちょっと理解してから弄った方がいい(というかformsで構築したほうがいいだろ)
こういう方法はあるみたい
http://social.msdn.microsoft.com/Forums/ja-JP/wpfja/thread/b0612ddb-2390-4458-bb3d-86c904509d82
0513デフォルトの名無しさん2010/04/05(月) 02:52:05
>>512
ありがとうございます。
その質問+解答も見ていましたが
やはりその方法しかないみたいですね。
まずはWinFormで作ってみてから
WPFに応用してみます。

※Animationを使いたいので、WPFのが良いんです。
0514デフォルトの名無しさん2010/04/06(火) 00:11:32
BeginAnimationって、
「さーアニメってこい!」
ってゴーサイン出すだけじゃん?

FromからToまで行き終わったときに
何か処理して欲しい場合って
どうすれば良いの?

FinishedAnimationとかあれば良いのに。
0515デフォルトの名無しさん2010/04/07(水) 13:49:44
completedイベントなかったっけ
0516デフォルトの名無しさん2010/04/08(木) 00:05:35
もうexpression4が出るのか・・・まあ出るわな
なにが変わるのかわかる資料が全然見当たんないなー
0517デフォルトの名無しさん2010/04/09(金) 01:02:24
まだ出ないんじゃない?
0518デフォルトの名無しさん2010/04/09(金) 01:05:14
無料あぷでは確定です
0519デフォルトの名無しさん2010/04/10(土) 00:12:37
Focus()して成功する条件って何でしょう?
キーボードフォーカスをそのエレメントに移動できなければfalse、ってのは分かるのですが
そもそもキーボードフォーカスを移動できる条件って何でしょうか?
0520デフォルトの名無しさん2010/04/10(土) 06:20:25
ウインドウの初期化が終わる前にコントロール関連のメソッドを呼ぶなと
05215142010/04/11(日) 15:59:49
>>515
おそくなりましたが
ありがとうございました。
0522デフォルトの名無しさん2010/04/11(日) 21:49:49
>>520
CheckBoxのIsCheckedをTrueにしてると、初期化中にチェックイベントが実行されたりするあれ?
0523デフォルトの名無しさん2010/04/13(火) 17:17:58
Expression BlendとかWPFで作られたソフトが起動しなくなった
0524デフォルトの名無しさん2010/04/13(火) 17:33:22
環境壊れてるんじゃないか
0525デフォルトの名無しさん2010/04/13(火) 21:48:30
趣味でWPFで3Dモデリングツールを作ろうとしてるんだけど、OpenGLとかDirectXでやった方が幸せかな?
ざっくりした質問で悪いけど、皆さんWPFの3Dって総合的にどう評価してます?
0526デフォルトの名無しさん2010/04/14(水) 05:48:41
>>525
「wpf direct3d 制約」でググるいいよ。
正直、WPFの3Dっておまけ機能だと思ってるけど。
0527デフォルトの名無しさん2010/04/14(水) 10:17:47
UIはWPFで3DビューはD3DImage+MDX/SlimDXくらいが現実的なんじゃね
0528デフォルトの名無しさん2010/04/14(水) 13:52:27
http://msdn.microsoft.com/ja-jp/windows/cc811510.aspx
XAMLなんて誰が考えたんだ?
こんなソース読む気も書く気もしねー
0529デフォルトの名無しさん2010/04/14(水) 13:58:43
めちゃめちゃ頭のいい人
ただ、凡人の限界を知らなかったらしい
0530デフォルトの名無しさん2010/04/14(水) 14:02:34
100円の和菓子1つを10万円の箱に入れてるようなもんだな
0531デフォルトの名無しさん2010/04/14(水) 15:10:29
ツールの使用を前提にしてるよなぁ〜
0532デフォルトの名無しさん2010/04/14(水) 15:45:31
ワロタ
Xamlコードを出力するツールをまず自作しなきゃな。
blend?高いしイラネ
0533デフォルトの名無しさん2010/04/14(水) 17:04:29
コードで計算してジオメトリ作ってxamlで書き出すんだよ?
まあなんとかいうモデリングソフトで書いてxaml出力してもいいけどね
0534デフォルトの名無しさん2010/04/14(水) 18:41:57
>>528
> 2 次元から抜け出そう

心にぐさりと来ました
0535デフォルトの名無しさん2010/04/14(水) 19:02:31
まだ入り込めてもいないのに
0536デフォルトの名無しさん2010/04/14(水) 20:04:03
まあ普通はツールで出力するだろ
そのためのXMLだ
0537デフォルトの名無しさん2010/04/14(水) 20:15:00
WPFの3Dって、モデリングツール(DirectX)で画像処理ー>XAMLフォーマットで出力という使い方を想定してんじゃねえの?
わざわざ手かせ足かせを嵌めて走る意味はなかろう。
0538デフォルトの名無しさん2010/04/14(水) 20:59:43
Visual Studio 2010 + WPF4.0
を使っている方は少ないと思いますが、
「これが原因じゃない?」程度でも構いませんので
何か思い当たることがありましたら、お願いします。

■質問内容
以下の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:11
MouseMoveとか他のイベント捕まえてみたら?
0540デフォルトの名無しさん2010/04/15(木) 00:01:33
MouseMoveですか?
ManipulationではなくMouseMoveで
操作しろということでしょうか?
0541デフォルトの名無しさん2010/04/15(木) 07:51:03
WPFってなんでこんなもっさりしてんの?

Direct3Dとか少ししか触ってないので見当違いなこと言ってたらすまん。

1.UIElementツリー
2.Direct3DのVertexBufferとかMesh
3.実際の出力

WPFは主に1の画面要素自体とイベントなどのハンドリング、状態通知でごにょごにょとなどとそれらを2に反映させるものだと思ってるんだが、
1自体が重いのか1から2への変換などが重いのか?
2,3とかは高速なんだろうし、現状では削りようのないところなんだろうけれど。

たとえば画面のボタンの背景色を変えた場合は内部でどんな動作になるんざんしょ。
0542デフォルトの名無しさん2010/04/15(木) 08:03:57
普通に1だろ
ちなみに1と2の間にはもう一つ層がある
Direct3DをGUI向けにラップしたネイティブコードのライブラリを使ってる
0543デフォルトの名無しさん2010/04/15(木) 10:08:43
もっさりっていうならまずスペック更科よ
0544デフォルトの名無しさん2010/04/15(木) 21:06:10
ゲーム作成にWPFを使いたいんですが、文献が少なくて困ってます。
オススメの文献とかありませんか?
0545デフォルトの名無しさん2010/04/15(木) 21:33:45
ゲームってジャンルくらい書きなよ
0546デフォルトの名無しさん2010/04/15(木) 21:40:07
WPFの文献だと日本語のはエッセンシャルWPFぐらいしかないんだっけかね?
0547デフォルトの名無しさん2010/04/15(木) 21:40:59
失礼しました。2Dで、ベクター画像を用いた格闘ゲームです。
ですが、格闘ゲームに限らず、
WPFでのゲームプログラミングの情報自体が見つけられなかったので、
ほかのジャンルの情報でも充分助かります。
0548デフォルトの名無しさん2010/04/15(木) 21:47:43
ギャルゲーくらいですよこれ。
ギャルゲーでビデオカード要求とかあり得ないんでギャルゲーでは主流になってもいいと思います。
0549デフォルトの名無しさん2010/04/15(木) 21:50:22
WPFは基本的にビデオカード要求だけど
0550デフォルトの名無しさん2010/04/15(木) 21:58:28
>>547
「エッセンシャル WPF」
「XAML プログラミング WPFアプリケーションの概要と開発」
このスレではこの2冊がそこそこ評判が良かった。
もし英語に抵抗が無ければ出版数が多い洋書で探した方が良いかと。
個人的には書籍じゃないけどMSDNのサンプルが一番役に立ったよ。

WPFでゲームを作ってる人は少ないだろうなあ。
DirectXかXNAを使った方が良いと思うんだけど。
0551デフォルトの名無しさん2010/04/15(木) 22:29:22
google booksでwpf検索してみたら
だいたい用は足りると思う
■ このスレッドは過去ログ倉庫に格納されています