トップページ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/
0427デフォルトの名無しさん2010/03/24(水) 23:59:15
細かい違いはあるけど Silverlight 覚えるのも WPF 覚えるのも大差ないような気はするよね。
0428デフォルトの名無しさん2010/03/25(木) 04:20:54
Expression Blend 3をダウンロードしてみたんだが
UIがめっちゃオサレですね
でも使い方が全然わからん
ほんとにデザイナさんこんなの使えるの???
0429デフォルトの名無しさん2010/03/25(木) 06:40:20
flashでas3やってるデザイナなら使えると思う
0430デフォルトの名無しさん2010/03/25(木) 10:53:57
体を使う技はデザイナでも訓練しなければ云々
0431デフォルトの名無しさん2010/03/25(木) 13:04:21
>>426
OSはあんまり関係ないよ
WPFは基本的にウィンドウ内で完結してるのでほんとにゲームと全く変わらない
0432デフォルトの名無しさん2010/03/25(木) 17:46:11
描画システムが違うって点でOS関係あるんじゃないの?
0433デフォルトの名無しさん2010/03/25(木) 17:59:00
XPがWDDM1.1に対応してないという点では関係ある
ウインドウの中身をdirectxで書いてるという点では関係ない
0434デフォルトの名無しさん2010/03/25(木) 22:30:39
XPだとGPU支援が得られず、CPU負荷が大きい。
なのでOSは思いっきり関係ある。
0435デフォルトの名無しさん2010/03/25(木) 22:33:57
それ迷信
単なるゲームだと何度言ったら
0436デフォルトの名無しさん2010/03/25(木) 22:42:50
XPでGPUアクセラレーションが効かないっていう噂の発端は
XPでは透明ウィンドウがソフトウェア処理されていたこと
.NET3.5ではXPでも透明ウィンドウにGPUが効くようになった
0437デフォルトの名無しさん2010/03/25(木) 22:49:27
なるほど。
3.5以降ターゲットで作ればVista以降と比べて遅いってことはなくなるのか。
0438デフォルトの名無しさん2010/03/26(金) 00:13:16
3.5のせいでウィンドウフックするタイプのソフトは全部使えなくなったわ
0439デフォルトの名無しさん2010/03/27(土) 01:22:15
WPF3.5 SP1 です。

イラレで描いた絵をXAML形式で吐いて
WPFに配置することはできますが、
以下のことは可能でしょうか?

 ・座標 (a, b) を設定する
 ・ボタンを押す
 ・指定した座標に、イラレで描いた絵を配置する

たとえば、ある canvas に対する相対位置 (a, b) に
XAML形式のものを配置するということを、C#のコードで
実現することは出来るのでしょうか?
0440デフォルトの名無しさん2010/03/27(土) 08:06:13
できるとしか答えられない
0441デフォルトの名無しさん2010/03/27(土) 08:23:34
>>440
*.cs からイラレxamlって生成できるの?
どうやんの?
0442デフォルトの名無しさん2010/03/27(土) 08:27:29
どうやるかは分からないが
労力を無視すれば
どんなことであれ不可能ではないだろう
0443デフォルトの名無しさん2010/03/27(土) 09:08:38
*.cs で、はしらんけどイラストレーターには Xaml 出力のプラグインがあったよ?

http://www.mikeswanson.com/xamlexport/
0444デフォルトの名無しさん2010/03/27(土) 09:24:27
>>439
XamlReaderでXAMLを読み込んでXAMLのルート要素の型(IllustratorならたぶんCanvas)にキャスト
Canvas.SetLeftとCanvas.SetTopで位置を設定
配置されてるCanvasのChildrenに追加
0445デフォルトの名無しさん2010/03/27(土) 15:17:30
あるいはC#で静的にXAMLファイルを書きかえる
0446デフォルトの名無しさん2010/03/27(土) 19:26:24
>>442
〜でできますかという言い方をすれば俺ならこうやってできるぜ
という人が必ず現れるので労力は無視できる。
0447デフォルトの名無しさん2010/03/27(土) 19:37:45
>>446
それが2ちゃんの正しい使い方
0448デフォルトの名無しさん2010/03/27(土) 19:39:35
「◯◯って××も出来ないんだね→ばーかばーか、△△で出来るっつーの」メソッドと、
「◯◯ってどうやるんでしょう?→△△で出来ますよ(嘘自演)→アホ、□□だ情弱」メソッドもあるでよ。

0449デフォルトの名無しさん2010/03/27(土) 19:44:39
もはやそのメソッドも使い古されて「△△で」「□□だ」は書かれない傾向が
04504392010/03/27(土) 22:09:58
>>443
ありがとうございます。
そのプラグインで生成したxamlを *.cs.xaml に記述するのではなく
*.cs の中から生成したいのです。

>>444
ありがとうございます。
今、外出中なので帰宅したらやってみます。
また、いただいた情報から更に調べてみます。

>>445
ありがとうございます。
検索の手がかりになるキーワードだけでも
教えていただけないでしょうか。
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っておまけ機能だと思ってるけど。
■ このスレッドは過去ログ倉庫に格納されています