[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/09 22:01 / Filesize : 192 KB / Number-of Response : 878
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [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/

459 名前:デフォルトの名無しさん mailto:sage [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

460 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:15:53 ]
ActualWidth/ActualHeightでいいはずだが?
「調べても分からん」?「確認したけど期待した値じゃない」じゃなくて?

461 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:17:37 ]
計算される前に呼んでるんだろ

462 名前:459 mailto:sage [2010/03/28(日) 16:20:36 ]
>>460
>「確認したけど期待した値じゃない」じゃなくて?
そうでした。すまん。
なんか 0 が返ってくる。

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

お二方ありがとうノシ

463 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:35:23 ]
ggrks

464 名前:459 mailto:sage [2010/03/28(日) 16:42:19 ]
何を血迷ったか、WinMain() の中で呼んでいたよ orz
Window_Loaded() の中で呼んだら、期待した値が来ました。
本当にありがとうございました。

465 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 18:09:57 ]
>>464
いいってことよ

466 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 18:44:24 ]
おまえら質問のしかたで反応が違いすぎ

467 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 18:54:47 ]
いや普通そうだろ



468 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 18:56:06 ]
>>466
普通そうです

469 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 18:57:59 ]
私は女子中学生だけどそれが普通だと思います。

470 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 19:02:41 ]
「自分のしたいことが明確にわかっている」のが質問の最低条件だから。
ここコミュ力試験に出るよ。

471 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 19:07:14 ]
エスパーじゃないからな

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

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

たまーにヒントがもらえるから

472 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 19:26:58 ]
>>470
あと「回答すべきことを明確に伝えれる」「必要なことは書き余分なことは書かない」も重要。

「ネットはテレホーダイの時代以前から触っているので」とか
歯に詰まったクラッカーのカスほどの価値もないことを書いて
自分が調べたキーワードがどういうものかもかかない奴には当然冷たい。

473 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 20:01:39 ]
>>459
最初の一行が効いたな

474 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 20:03:03 ]
>>472
おまえはテレホマンの魂を侮辱した!

475 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 20:17:42 ]
しかしネットで難解なドキュメントやマニアックなブログ見るよりも
ビギナー向けのXAML入門書読んだほうが早いような気もするが

476 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 20:34:18 ]
普段、難解なことを扱っているんだろ。
入門書で分かるレベルのことであっても
いつも通りの調べ方をしてしまったんだろな。
それ故にプライドも高い。

477 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 20:44:19 ]
スレチ



478 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 20:44:23 ]
WPFで、マウスポインタがディスプレイの端を触った時に
発生するイベントってありますか?

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

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

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

もしあるようでしたら、ご教授願いたいです。
よろしくお願いします。

479 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 20:55:04 ]
2)は美しくなくない

480 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 20:55:39 ]
MouseMoveイベントと
www.atmarkit.co.jp/fdotnet/dotnettips/003screen/screen.html
を組み合わせてみては?

481 名前:478 mailto:sage [2010/03/28(日) 21:11:57 ]
>>479
美しくなくないですか。
例えば市場に出すアプリを組んでいるプロ?の方でも
こういった力技で解決するのでしょうか。

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


以下、つぶやきです。
1)の方法でも、OSは定期的に MouseEnter しているのか
判定しているのでしょうかね。それなら1)も2)も処理量は
大差ないかもしれません。が、仮定の話なので無駄ですね。

482 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 21:19:33 ]
マウスポインタがある領域に入ったってイベントが欲しいわけでしょ
正しい実装じゃん
力技じゃない

483 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 21:21:40 ]
タイマで処理するにしてもそれぐらいカスみたいなコスト

484 名前:478 mailto:sage [2010/03/28(日) 21:21:56 ]
>>482
なるほど、考えを改めます。
ありがとうございました。

485 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:53:38 ]
Blendでコードビハインドべったりで書いていくと簡単だったりするんだよなwpf
昔のVBと大して変わんないってくらい

486 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 08:02:13 ]
macで使われてるGUIのボタンってなんっていいましたっけ・・・
あれを再現は可能ですか?

487 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 09:03:01 ]
Dockか?
そりゃWPFはまさにああいうことをやるためのフレームワークだから



488 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 10:29:01 ]
aquaのことじゃないの

489 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 13:00:22 ]
ボタンの見栄えを自由にするなんてのはお手のもんでしょうな。
別にFormで出来なかったわけでもないけど。

490 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 21:11:48 ]
WPF Themesにいろいろ綺麗なテーマがあるよ
Macの真似みたいな貧乏臭いことはやめてくれ

491 名前:デフォルトの名無しさん [2010/03/31(水) 22:27:14 ]
WPFで3Dグラフィックの仕事をやることになったんだが、皆目見当がつきません。
何か良い本は無いでしょうか。

492 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 22:46:11 ]
まずは、Essential WPF。後は英語でググレ。

493 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 23:18:18 ]
そんなもん読んでるに決まってるだろ。
他に無いでしょうか。

494 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 23:28:13 ]
だれか何かを挙げる→そんなもん読んでるに決まってるだろ→
だれか何かを挙げる→そんなもん読んでるに決まってるだろ→
だれか何かを挙げる→そんなもん読んでるに決まってるだろ→(ry

まぁ、挙げるだけ無駄ってことだなw

495 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 23:45:33 ]
返答してる人が同一人物である保証すらないしな。

496 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 23:51:02 ]
idほしいお・・・

497 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 00:12:50 ]
3D PROGRAMMING FOR WINDOWS



498 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 07:31:59 ]
WPF 3Dプログラミング―誰でも簡単に3Dゲームやツールが作れる最新技術!

499 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 11:24:40 ]
WPFによる3Dプログラミングの極意 (民明書房)

500 名前:デフォルトの名無しさん mailto:sage [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>

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

仕様でした><

501 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 21:45:22 ]
GJ

502 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 22:58:08 ]
Canvas canvas1
Ellipse elli1, elli2

ああるとして

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

とした後に

elli2 だけ Clear することってどうやれば良いんですか?

503 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 23:01:24 ]
Remove

504 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 23:07:15 ]
>>503
あ・・・ありがとう。
なんで見つからなかったんだろう。

505 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 04:26:05 ]
>>491
Practical WPF Graphics Programming
この本なんかはどう?


506 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 07:52:30 ]
>505
ttp://www.free-ebooks-download.org/free-ebook/dotnet/Framework/practical-wpf-graphics-programming.php

なんかあったがなんかいろいろばら撒く気満載泣きガス・・・
とりあえずダウンロードはできた。中身もあってるっぽいが・・・

507 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 09:09:51 ]
最近Freeに影響されたかバラ撒くとこ増えたねえ。
それとも欧米では結構昔からこういうことするとこ多かったのかな?



508 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 09:55:54 ]
ローマ字変数名しか使えない俺には無用

509 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 10:16:55 ]
少なくともWPFに関する本はほぼすべてネットで拾えてしまうからなあ。
実に由々しき事態だ。(棒)

510 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 10:19:12 ]
ちょっと目を通してみたけどWPFの本というよりグラフィックスの基礎の本だなあ
普通は可視化にOpenGLとか使うところをたまたまWPF使ってるだけな感じ

511 名前:デフォルトの名無しさん [2010/04/04(日) 22:14:21 ]
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/717excelfile/excelfile.html
こちらを参考にしてWPFにExcelファイルを読み込まれるまではできたのですが、
これをWPFコントロールにそのまま表示させることって出来ないのでしょうか。

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

それとも、セルから全部コピーしないとダメなのでしょうか?

512 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 01:03:51 ]
>WPFにExcelファイルを読み込まれる
たぶんもうちょっと理解してから弄った方がいい(というかformsで構築したほうがいいだろ)
こういう方法はあるみたい
social.msdn.microsoft.com/Forums/ja-JP/wpfja/thread/b0612ddb-2390-4458-bb3d-86c904509d82

513 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 02:52:05 ]
>>512
ありがとうございます。
その質問+解答も見ていましたが
やはりその方法しかないみたいですね。
まずはWinFormで作ってみてから
WPFに応用してみます。

※Animationを使いたいので、WPFのが良いんです。

514 名前:デフォルトの名無しさん [2010/04/06(火) 00:11:32 ]
BeginAnimationって、
「さーアニメってこい!」
ってゴーサイン出すだけじゃん?

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

FinishedAnimationとかあれば良いのに。

515 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 13:49:44 ]
completedイベントなかったっけ

516 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 00:05:35 ]
もうexpression4が出るのか・・・まあ出るわな
なにが変わるのかわかる資料が全然見当たんないなー

517 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 01:02:24 ]
まだ出ないんじゃない?



518 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 01:05:14 ]
無料あぷでは確定です

519 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 00:12:37 ]
Focus()して成功する条件って何でしょう?
キーボードフォーカスをそのエレメントに移動できなければfalse、ってのは分かるのですが
そもそもキーボードフォーカスを移動できる条件って何でしょうか?

520 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 06:20:25 ]
ウインドウの初期化が終わる前にコントロール関連のメソッドを呼ぶなと

521 名前:514 mailto:sage [2010/04/11(日) 15:59:49 ]
>>515
おそくなりましたが
ありがとうございました。

522 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 21:49:49 ]
>>520
CheckBoxのIsCheckedをTrueにしてると、初期化中にチェックイベントが実行されたりするあれ?

523 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 17:17:58 ]
Expression BlendとかWPFで作られたソフトが起動しなくなった

524 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 17:33:22 ]
環境壊れてるんじゃないか

525 名前:デフォルトの名無しさん [2010/04/13(火) 21:48:30 ]
趣味でWPFで3Dモデリングツールを作ろうとしてるんだけど、OpenGLとかDirectXでやった方が幸せかな?
ざっくりした質問で悪いけど、皆さんWPFの3Dって総合的にどう評価してます?

526 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 05:48:41 ]
>>525
「wpf direct3d 制約」でググるいいよ。
正直、WPFの3Dっておまけ機能だと思ってるけど。

527 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 10:17:47 ]
UIはWPFで3DビューはD3DImage+MDX/SlimDXくらいが現実的なんじゃね



528 名前:デフォルトの名無しさん [2010/04/14(水) 13:52:27 ]
msdn.microsoft.com/ja-jp/windows/cc811510.aspx
XAMLなんて誰が考えたんだ?
こんなソース読む気も書く気もしねー

529 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 13:58:43 ]
めちゃめちゃ頭のいい人
ただ、凡人の限界を知らなかったらしい

530 名前:デフォルトの名無しさん [2010/04/14(水) 14:02:34 ]
100円の和菓子1つを10万円の箱に入れてるようなもんだな

531 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 15:10:29 ]
ツールの使用を前提にしてるよなぁ〜

532 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 15:45:31 ]
ワロタ
Xamlコードを出力するツールをまず自作しなきゃな。
blend?高いしイラネ

533 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 17:04:29 ]
コードで計算してジオメトリ作ってxamlで書き出すんだよ?
まあなんとかいうモデリングソフトで書いてxaml出力してもいいけどね

534 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 18:41:57 ]
>>528
> 2 次元から抜け出そう

心にぐさりと来ました

535 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 19:02:31 ]
まだ入り込めてもいないのに

536 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 20:04:03 ]
まあ普通はツールで出力するだろ
そのためのXMLだ

537 名前:デフォルトの名無しさん [2010/04/14(水) 20:15:00 ]
WPFの3Dって、モデリングツール(DirectX)で画像処理ー>XAMLフォーマットで出力という使い方を想定してんじゃねえの?
わざわざ手かせ足かせを嵌めて走る意味はなかろう。



538 名前:デフォルトの名無しさん [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 に対して適用したい
のですが、どのようにしたら良いかアイデアが思いつく方、お願いいたします。

539 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 23:46:11 ]
MouseMoveとか他のイベント捕まえてみたら?

540 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 00:01:33 ]
MouseMoveですか?
ManipulationではなくMouseMoveで
操作しろということでしょうか?

541 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 07:51:03 ]
WPFってなんでこんなもっさりしてんの?

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

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

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

たとえば画面のボタンの背景色を変えた場合は内部でどんな動作になるんざんしょ。

542 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 08:03:57 ]
普通に1だろ
ちなみに1と2の間にはもう一つ層がある
Direct3DをGUI向けにラップしたネイティブコードのライブラリを使ってる

543 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 10:08:43 ]
もっさりっていうならまずスペック更科よ

544 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:06:10 ]
ゲーム作成にWPFを使いたいんですが、文献が少なくて困ってます。
オススメの文献とかありませんか?

545 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:33:45 ]
ゲームってジャンルくらい書きなよ

546 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:40:07 ]
WPFの文献だと日本語のはエッセンシャルWPFぐらいしかないんだっけかね?


547 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:40:59 ]
失礼しました。2Dで、ベクター画像を用いた格闘ゲームです。
ですが、格闘ゲームに限らず、
WPFでのゲームプログラミングの情報自体が見つけられなかったので、
ほかのジャンルの情報でも充分助かります。



548 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:47:43 ]
ギャルゲーくらいですよこれ。
ギャルゲーでビデオカード要求とかあり得ないんでギャルゲーでは主流になってもいいと思います。

549 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:50:22 ]
WPFは基本的にビデオカード要求だけど

550 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:58:28 ]
>>547
「エッセンシャル WPF」
「XAML プログラミング WPFアプリケーションの概要と開発」
このスレではこの2冊がそこそこ評判が良かった。
もし英語に抵抗が無ければ出版数が多い洋書で探した方が良いかと。
個人的には書籍じゃないけどMSDNのサンプルが一番役に立ったよ。

WPFでゲームを作ってる人は少ないだろうなあ。
DirectXかXNAを使った方が良いと思うんだけど。

551 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 22:29:22 ]
google booksでwpf検索してみたら
だいたい用は足りると思う

552 名前:デフォルトの名無しさん [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の話ばかりです。よろしくお願いします。

553 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 00:23:24 ]
Imageを持ったButtonのUserControlをXAMLで書いておいて、コード内で生成

554 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 01:45:52 ]
>ということをXMALではなくC#のコードから実現したいです。
そうですか
>質問内容を理解しないでXAMLの話をする回答者が多いみたいですが。
そうですか
>XAMLではなくC#から生成したいのです。
そうですか
>画像の情報も動的に取得するので、画像もC#で生成したいです。
そうですか
>ググってもXAMLの話ばかりです。よろしくお願いします。
なにをよろしくですか

555 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 01:48:33 ]
ちなみに
38526の回答以外のなにものでもないよ
質問内容を理解しないんじゃなくて、回答読んでも理解できない脳みそを恨め

556 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 02:02:05 ]
>>554
中身の無いレスだな
お前みたいなのは来なくて良いよ

557 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 02:11:34 ]
>>556
これがどれだけ程度の低い質問かわかんないってことは本人だろうな・・・



558 名前:552 mailto:sage [2010/04/16(金) 02:19:45 ]
>>553
ありがとうございます。
UserControlなるものを使ったことが無いので
早速調べてみます。

>>554-555
38526がコードの話をしていることは分かっています。
>XAMLの話をする回答者が多いみたいですが。
と書いているのは、それを示しています。
38526の回等と>>553氏のレスが同値だと分かるレスを
していただき、ありがとうございます。

>>556
555のレスから得たことがありますので大丈夫です。

>>557
552は私です。
UserControlの話など、もっと汎用的な調べ方をすれば
沢山情報が得られるのかもしれませんが、具体的な事例が
あまりないというのは、それだけ壊滅的なほどに初歩的ということなのですね。


もっと勉強します。ありがとうございました。

559 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 02:20:54 ]
>>557
は?程度の低さは関係ないだろ
どれだけ馬鹿なんだよ

560 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 02:21:32 ]
>>558
違うよ
ButtonオブジェクトのContentプロパティにImageオブジェクト突っ込めばいいだけ

561 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 02:22:47 ]
>>559
はいはい
お前が気の済むように回答してやれよ

562 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 02:29:42 ]
>>561
>はいはい
え?マジで分かってないの?
こりゃ重症だな。関わらないでおくよ。

>お前が気の済むように回答してやれよ
うわーまいったねこりゃ。
既に解答が出ているのに更に回答しろと?

別の機会に謹んで回答させていただきますw

563 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 02:32:36 ]
>>562
中身の無いレスだな
以下略

564 名前:558 mailto:sage [2010/04/16(金) 02:55:46 ]
>>560
お恥ずかしいです。ありがとうございます。

質問をする前にスレを見返していましたが、
人を馬鹿にするレスしかしない人が多い中、
あきれずに回答していただきありがとうございました。

565 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 06:49:02 ]
横着せずにWPF入門書を最初から読んでいけばコントロールの追加方法なんて最初にかいてある。
なんで未知の言語なのにチュートリアルすっとばそうとするかな。

別にすっとばしてもいいけどひとりで悩んでくれよ。ひとのせいにすんな。

566 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 07:26:49 ]
これだからIDの無い板は。

567 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 07:51:10 ]
>>565
おおむね同意だが

>ひとのせいにすんな。
これってどこを見て感じたことなんだ?
なぜこう感じたのか、俺には全く分からんのだが。




568 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 11:50:17 ]
blend4のベータ出たな
www.microsoft.com/expression/products/Blend4RC_Features.aspx
めぼしい機能追加はピクセルシェーダくらいじゃないのかな
あとはギャラリーで公開してくれれば済むような追加しかないような

569 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 11:59:39 ]
ああでも3->4のアップグレードは全員無料なのか

570 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 12:02:40 ]
スレ伸びてるから WinSDK 7.1 でも出たのかと思ったら・・・

>>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)) } };
}


571 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 14:07:51 ]
「.netなんて池沼にもできる障碍者用言語だろ余裕だよ。入門書?そんなもん小学生にでも読ませとけ」
→「はー?なんでうごかねーんだよこの欠陥言語。おいくずどもどうなってるか説明しろ!」

ようするにこういう思考だろ。
「なんでおれがこんな低レベル言語にてこずらなきゃならないんだよ」みたいな
雰囲気ぷんぷんさせながら質問するとか鼻で笑うわ

572 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 22:21:44 ]
> ボタンの中に画像を置く
> ということをXMALではなくC#のコードから実現したいです。

キチ○イwww

573 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 00:01:45 ]
>>570
へーこんな書き方できるんだ
はじめて知った。

>>571
お前みたいに"決め付ける"人って
大抵・・・

574 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 09:50:13 ]
WPFで「コードから動的にボタンを配置したい」ということ自体めったに無いよね
WinFormsでそうやってたようなことはアイテムテンプレート使えばだいたいXAMLだけで完結する

575 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 13:18:15 ]
アイテムテンプレートでできるけどある条件の時はこっちとかするのも含めてコードで書いちゃった方が好きかなー


576 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 14:52:46 ]
XAMLって「データ言語」っていうんだっけ。
プロパティの指定はXAMLコードから判るが、メンバの設定は何度読んでも混乱する。

577 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 22:05:41 ]
Rectangleを20個ほど一気にAnimationさせると
Core2 E7400 + GeForce9400GT でも若干ガクガクするんだけど
WPFってそんなもんなの?
それとも、うまい書き方があるの?

RectangleはXAMLで配置して、AnimationはC#内で書いてるんだけど。



578 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 22:18:56 ]
描画だけでよければDrawingVisual使ってみたら
間違ってもDrawingContextは使わないように

579 名前:577 mailto:sage [2010/04/19(月) 23:12:18 ]
>>578
ありがとう、調べてみた。
これってアニメーションできないように思うんだけど
そんなことないの?
イベントとかは使わないから描画だけといえばそうなんだけど。

20個(できればそれ以上)のRectangle、長い長方形をぐるぐる回したいんだよね。
風車がたくさん立っているイメージ。

580 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 00:46:03 ]
オブジェクトの重なりが多いほど重くなる

581 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 00:47:39 ]
CPUでピクセルの合成してるんだっけ?
そういうのはGPUが得意なんだがな・・・

582 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 00:49:14 ]
WPFのウインドウ内部は全部directxで書いてるって何回書いたらわかるんだよ
けちらずエッセンシャル買え

583 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 01:35:21 ]
>>579
その程度のアニメーションなら普通にStoryboardじゃいかんの?

584 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 12:27:39 ]
描画じゃなくてレイアウトとか入力とか高次の部分で引っかかってるんだろ
RenderTransform使ってみるとか

585 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 11:11:04 ]
みんなRelayCommandとDelegateCommandのどちらを使ってる?

586 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 12:11:56 ]
使うも何も両方ともただのサンプルでしょ
必要に応じて自分で作るんだよ

587 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 12:19:10 ]
他人に説明するとき、アレと一緒で済むから楽じゃん。



588 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 15:06:02 ]
www.codeproject.com/KB/WPF/NitoMVVMCommands.aspx?msg=3132936
面白い比較の記事を見つけた。
こういうのを探していたんだ。
終わりの方の比較のところね。

589 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 21:53:09 ]
というか RelayCommand でも DelegateCommand でもどっちでもいいけど
標準で用意しときゃいいのにとはおもったわ。

590 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 22:00:52 ]
だってMとVMはWPFと関係ないじゃん

591 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 22:26:42 ]
依存プロパティではCLRラッパーが使えて、添付プロパティでは
使えないのはどうして?
MSDNでは「WPF の添付プロパティには、get および set のアクセスを容易にするための
標準的な CLR "ラッパー" メソッドはありません。
これは、添付プロパティが設定されたインスタンスの CLR 名前空間に、
その添付プロパティが属しているとは限らないからです。」
って書いてあったけど。つまり・・・どういうことだってばよ

592 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 22:33:09 ]
自分自身のプロパティじゃなくて他のオブジェクトに設定するプロパティだから
プロパティ構文じゃ書けないよってこと

593 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 22:33:59 ]
たとえばCanvasのLeft添付プロパティはCavnasクラスに定義されたプロパティだけど
そのプロパティの値を実際に持つのはCanvasの中に追加する他のクラスのインスタンスだろ
CLRプロパティではプロパティが定義されてるクラスとその値を持つインスタンスのクラスは必ず一致するけど
添付プロパティでは一致しないからCLRプロパティでは表現できない

594 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 22:39:53 ]
でも、アクセスする構文ってCanvas.Leftみたいに[クラス名].[プロパティ名]でしょ。
ラッパーを静的にする必要はあるけど、コードからでも普通に使えそうだけどなあ。

595 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 22:42:44 ]
だからCanvas.SetLeftメソッドがあるだろ

596 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 22:44:03 ]
「どのオブジェクトの」Canvas.Leftなのよ?
ということになって結局Canvas.GetLeft(obj)で十全だろ、分かりやすいし

597 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 22:48:49 ]
設定を行うインスタンスを知る必要がある(引数として送る)からラッパーでは出来ないってことか
なっとく



598 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 23:04:20 ]
Obj.Canvas.Left とかならまだわかる

599 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 23:06:01 ]
Obj[Canvas.Left]だな

600 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 23:15:27 ]
DependencyObjectにthis[DependencyProperty]を定義すると
obj[Canvas.LeftProperty]にせざるを得ないからなぁ objectでしか扱えないし
それ以上は言語の方に手を入れなきゃなんなくなる

いや、dynamicでなんとかなる・・・か? しないで良いけど

601 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 23:20:15 ]
WPF は結局ユーザーの要求するパフォーマンスに達しなかったね。

602 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 23:50:23 ]
自分が使いこなせないからってひとも同じだと思う人って…

603 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 02:50:17 ]
BlendとかXamlPadみたいにリアルタイムでXamlの内容を表示するのってどうやるの?

604 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 06:57:38 ]
>>603
これがおのぞみのかな?

XamlPadを作ってみた。
pro.art55.jp/?eid=863237

605 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 07:42:46 ]
>604
それリアルタイムでの編集内容反映は入ってないよね?


606 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 21:28:40 ]
>>604
おー、意外にシンプルでびっくり。さんくす
>>605
更新タイミングは工夫次第でいけそう。

607 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 23:02:07 ]
テキスト変更イベントのたんびにパースするとかね。




608 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 23:26:42 ]
あるWindow window1 があって、
window1の中のある領域に X を配置して、
その X の中を右方向にアニメーションさせた場合、
X の右端がXの左端にくっついたように
ずっと X がループされてスライドするアニメーションって
どうやったらできますか?

ここで X とは、CanvasでもPageでも何でもよいので、
ボタンとかラジオボタンとかが配置できる領域のことです。

説明が難しいのですが、例えば window1 に電車を描き、
電車の窓から X (外の景色) を眺めているとし、外の景色が
ずっとスライドしていく感じです。

このとき、X に動的に「電柱」の絵を置いたら、ループ絵として
次に現れる X にも「電柱」が存在するように見せたいです。


609 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 23:36:59 ]
はじっこにきたら座標もどせばいいだけじゃないの?

610 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 23:40:12 ]
一番手抜きだと1枚の画像を座標変えて常に2回表示すればいいだけだろ

611 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 00:01:30 ]
>>609
ありがとうございます。ですが、それだと絵が切れてしまいます。
窓の大きさが X と同じで、動かす絵が X の場合、
X を右にスライドさせると、Xの左側が空白になります。
X1 X2 と Xを並べて、X2がXの領域からはずれたら X1 の左に
配置するようにすれば実現できますが、そうすると X1 と X2 が
同じものになりません。X1に電柱が追加されたらX2にも追加、となると
処理が重たくなりますので・・・。

>>610
ありがとうございます。
そちらの方法で、チカチカさせない方法があるのでしょうか??

612 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 00:08:20 ]
>>611
まあ>>610の方法はゲームの一般的なループの作り方なだけで
そのまんまはだめかもしれないけどねw
なるべく再利用した方がいいかと思って>>610として書いたけど
ちらついたりするならとりあえずは1つのファイルを内部で2つ同じものを作って
とかはだめ?

613 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 00:11:20 ]
それでもうまくいかないならとりあえずは読み込む画像その物を
同じ物を2枚並べた横長で作っておいて座標で調整するか

614 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 00:13:10 ]
expressionの4にMVVMのプロジェクトテンプレートが入るみたいね
これが標準のフレームワークってことになんのかしら

615 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 00:14:55 ]
>>612-613
やはり冗長な部分を作って
必要な部分だけ見せるのが手っ取り早いみたいですね。
なるべくなら再利用したいのですが、ひとまず↑でやってみます。

では、失礼します。

616 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 00:25:33 ]
>>615
画像をTile指定で表示してやれば自動的に繰り返しになる。
あとはViewportを動かしてやればいい。
ttp://www7a.biglobe.ne.jp/~fbsoft/test/miku1.cgi


617 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 00:31:51 ]
IEはソース表示が出来ないようなのでXAMLのソースも張っとく。
ttp://codepad.org/jGnPpTxR




618 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 00:43:03 ]
>>616-617
おぉ、このようなものもあるのですね。
寝る前に見て良かったです。

ざざっと調べてみたのですが、こちらの方法では
画像を複製表示することはできるようですが、
Buttonなどが配置されたPage(を配置したFrameなど)を
複製表示させることはできないみたいですね。

(調べ方が甘かったらすみません)

教えていただいた TileMode で絵を複製して、
Buttonなどは自分で複数配置する方法も検討してみます。

619 名前:618 mailto:sage [2010/04/23(金) 00:55:24 ]
度々書き込み失礼します。

TileMode から色々と調べてみましたが、
Canvas Neme="canvas1"
にボタンなどを配置し、

<Rectangle ... >
 <Rectangle.Fill>
  <VirualBrush Visual={Binling element=canvas1}" />
 </Rectangle.Fill>
</Rectangle>

とすると、一応 Button なども複製されますね。
しかし(当然ですが)複製された絵の Button は操作できませんね。
残念です。

620 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 01:19:32 ]
スライドしてる状態でボタンなどを操作する必要も無いだろうから、
動いてないときは普通に表示して、
スライド中だけVirtualBrushに入れ替えればいいんじゃない。

621 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 01:36:50 ]
スライドといってもゆっくりのものでして
移動中でもクリックに反応して欲しいんです。

622 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 02:09:47 ]
その手のは一枚絵としてスクロールさせるというよりも同サイズでスライスした要素みたいに考えて
クリッピングと組み合わせて実現するのが常套じゃないのかな

623 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 04:11:30 ]
プログラムなんてプリミティブなアイデアの集合体なんだから
自分ですこしは考えなよ

624 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 06:47:11 ]
>>623
そういうことは2ch言ってもしかたないと思うんだぜ

625 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 07:47:11 ]
>>623
>>619では「考えている」認定されないのか。
2chって厳しいインターネットなんだなw

626 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 14:20:14 ]
二度手間でもエレガントじゃなくても冗長でも、数学的な問題じゃない限り
自分の望むことをコードにすることはできるだろう、諦める=考えてない、ってことさ

627 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 18:38:39 ]
richtextboxで行間を指定する方法はない?
LineHightやMarginを試してみても変わらなかった



628 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 18:39:55 ]
nyuryuが言っていたが、WPFでもすべての部分にDirectXを使っているわけではないらしい。

629 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 18:49:52 ]
>>627
WPFじゃなくてWinFormのでいいんだよな?
LineHeightってどのクラスのプロパティ?
行間ってのは段落間じゃない行間のことでOK?

まあEM_SETPARAFORMATとPARAFORMAT2使うことになると思う

>>628
にゅりゅ ってエロい響きだな

630 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 19:13:55 ]
>627
WPFでフォントコントロールったら、
FormattedText クラスじゃないんか?

ttp://msdn.microsoft.com/ja-jp/library/system.windows.media.formattedtext%28v=VS.80%29.aspx

631 名前:629 mailto:sage [2010/04/23(金) 19:16:34 ]
あ、ここWPFスレだった
C#スレと勘違いしてた、ごめん

632 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 19:22:45 ]
FlowDocument全体の行間ならFlowDocument.LineHeightで問題ないと思うけど

633 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 22:08:51 ]
>>627
WPFの方

634 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 12:07:11 ]
すまん。
自己解決した。
トークンごとに読み取ってそのトークンをパラグラフを追加するときに\r\nを無視しないのが原因だったらしい。
xamlを調べて初めて原因が分かった
間違い
<flowdocument>
 <paragarh>aaaa<run>(見えないが\r)</run><run>(見えないが\n)</run></paragrah>
</flowdoument>
正しくは
<flowdocument>
 <paragarh><run>aaaa</run></paragrah>
</flowdoument>


635 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 14:56:26 ]
Paragraph p = richtextbox.CaretPostion.Paragraph;
TextRange range = new TextRange(p.ContentStart, p.ContentEnd);
this.para = new Paragraph();
this.para.Margin = new Thickness(0);
this.Spilitter.Parse(range.Text);
this.doc.Blocks.InsertBefore(p, this.para);
this.doc.Blocks.Remove(p);
パラグラフの置き換えを行うとキャレットがパラグラフの一番最後に移動してしまう。これを防ぐ方法はない?あらかじめCaretPostionを覚えておいて、置き換えた後で戻してもダメだった。


636 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 16:15:42 ]
>>635
var curP = richTextBox.CaretPosition.Paragraph;
var offset = curP.ContentStart.GetOffsetToPosition(richTextBox.CaretPosition);
var newP = new Paragraph();
newP.Inlines.Add("New Paragraph");
richTextBox.Document.Blocks.InsertBefore(curP, newP);
richTextBox.Document.Blocks.Remove(curP);
richTextBox.CaretPosition = newP.ContentStart.GetPositionAtOffset(offset) ?? newP.ContentEnd;
これじゃダメなん?

637 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 21:42:03 ]
>>636
それだとだめだ。
aaa
(aaaの先頭でzを入力)
zaaa
(連続で入力すると、zazaaになってしまう)

なんでWPFってこんなに面倒なの?
文字単位で選択することもできないし、キャレットを文字単位で動かすことすらできない。
開発者は馬鹿なの?



638 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 22:10:32 ]
>>637
何がしたいのか分からないんだけど。
文字単位で選択するなら:
richTextBox.Selection.Select(richTextBox.CaretPosition, richTextBox.CaretPosition.GetPositionAtOffset(10));
キャレットを次の文字に移動するなら:
richTextBox.CaretPosition = richTextBox.CaretPosition.GetNextInsertionPosition(LogicalDirection.Forward);

TextPointer クラスと RichTextBox クラスについて、もうちょっと調べたら?

639 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 22:33:53 ]
>>638
目がシパシパしたwww

640 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 02:37:57 ]
>>638
パラグラフが
aaa
となっているときに
bbb
aaa
とすると、aaaを削除するとキャレットがaaaの先頭にあるにもかかわらず、bbbの後ろに移動してしまうのをどうにかして防ぎたい。
TextPointerについても調べたんだが、画面に表示されている文字単位で位置を取得するメソッドはなぜかなかった。

641 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 09:54:47 ]
>>640
>aaaを削除すると

>>635
this.doc.Blocks.Remove(p);に当たるのかな
言ってることがあんまよくわからないけど、空のパラグラフを置いといてその先頭にキャレット置くというのがやりたいんじゃないの?
ソースはそうなってないだろ

642 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 10:24:40 ]
>>641
>言ってることがあんまよくわからないけど、空のパラグラフを置いといてその先頭にキャレット置くというのがやりたいんじゃないの?
それじゃなくて、パラグラフを置き換えてもキャレットの位置をそのまま保つということがやりたい

643 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 23:47:54 ]
ScrollViewerのマウスホイールによるスクロールを無効化する方法はありますか?

644 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 00:03:42 ]
PreviewMouseWheelでHandledしちゃうとか

645 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 00:52:19 ]
>>644
e.Handle = trueでうまくいきました
ありがとうございます

646 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 03:26:57 ]
こんな感じでボタンを並べるにはどうすればいいんでしょうか?
uproda.2ch-library.com/239369drL/lib239369.png

平行四辺形とかでしたらなんとかなるんですが・・・

647 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 04:25:39 ]
表示部分にしかあたり判定がないんだから同じpanelに全部かさねて表示だけかえればいいじゃない
そんな形なら標準ボタンを使うわけでもないんでしょ



648 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 06:27:53 ]
ufcpp.net/study/dotnet/wpf_uielement.html
傾斜とかもできるので上辺もしくは下辺を短くするとか
できるかなあと思ったんですが無理ですかね?

649 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 07:04:59 ]
Expression Blend で簡単に星形のボタンとか作れるみたいだね。

650 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 07:09:59 ]
ジオメトリの作り方がわからないから四角の変形で作りたいっていうなら
アフィン変換使いなよ自分で計算してな

651 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 08:48:31 ]
Blend使えればベストだけどボタンぐらいならXAMLだけでなんとかなる。
ContorolTemplateを書けばいいだけでサンプルも結構転がってるから。
あとエッセンシャルWPF読んどけ

652 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 09:41:08 ]
>>648
それは線形変換で表現できないから無理
高校数学C参照

653 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 13:08:53 ]
文字単位で選択するメソッドがないので作ってみた。だが、どうも、遅いような気がする。これより早い方法があったら教えてほしい。
TextPointer getPostionAtCharacters(int offset)
{
for (int i = offset; this.Document.ContentStart.GetPositionAtOffset(i) != this.Document.ContentEnd; i++)
{
TextRange range = new TextRange(this.Document.ContentStart, this.Document.ContentStart.GetPositionAtOffset(i));
if (range.Text.Length == offset)
return range.End;
}
return null;
}


654 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 15:05:53 ]
>>649>>650>>651
ありがとうございます。

しかしここまでGUIをいろいろ変えやすいとなるとデザインセンスないと
きついですね・・・

655 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 18:47:52 ]
宇宙仮面のHP
エラーでまくり

656 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 19:03:56 ]
RadioButtonをC#からCheckする方法ありますか?

657 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 19:07:39 ]
あるよ



658 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 20:20:09 ]
>>656
XAML側でコントロールに名前(Name="hoge")とかやれば
C#側から従来のWinFormのようにいじり放題

659 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 20:38:00 ]
でも実際にはバインディングオブジェクトのプロパティの方を操作するよね

660 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 20:41:36 ]
WPFは要素にName付けたら負け

661 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 20:46:27 ]
それなんてみすりーど。

662 名前:656 mailto:sage [2010/04/26(月) 21:22:55 ]
>>657-661
>>658さんの方法以外はどのように書けばいいんでしょうか?

663 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 21:38:08 ]
気にせず名前付けたらいい

664 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 00:08:38 ]
>>660
コードビハインド使ったら負け

665 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 00:53:01 ]
真の勝者はXAMLを使わない

666 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 00:54:50 ]
blend+コードビハインド
都会派はこれ


667 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 00:55:03 ]
ソフトなんか他人に作らせるよね真の勝者なら。



668 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 00:57:01 ]
こだわりのソフト作成なら至福だろ
作らされてるなら敗者

669 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 01:27:42 ]
WPFの場合

プログラマーはバインド関連をマスター
デザイナーはXAML関連をマスター

そんなところですかね?

670 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 02:18:51 ]
BeginAnimationのタイミングが異なっても、
アニメの動きのタイミングを同期させる方法ってありますか。

671 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 04:59:26 ]
あるよ

672 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 08:28:30 ]
INotifyPropertyChangedから依存プロパティへのバインドが機能したりしなかったりする
わけがわからない

673 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 09:00:47 ]
>>669
正解じゃない。

プログラマーはバインド関連とXAML関連をマスター 。

674 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 22:14:00 ]
XAML自体はマスターするには.NETプログラミングに習熟してないといけないからデザイナには酷
デザイナーはExpression BlendとXAMLの基礎事項をマスター

675 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:05:19 ]
だな。MSはデザイナがXAMLを触らなくても大丈夫なようにツールを揃えた方が良いだろね。

676 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:08:47 ]
WPFのバインディングは勉強すればするほど魅力的なんだよな
C#のコントロールにも一応項目あったけどここまで使えたっけ?

677 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:15:35 ]
デザイナが実際には動かさないスタイルを自由奔放に作成して
上司は「デザイナの作った物がそのまま動く!素晴らしい!」と言い出して
結局はプログラマが地獄を見る。そういう代物だろ?



678 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:17:38 ]
うーん
まあ前ほどは地獄をみないんじゃないかな
バインディングが強力なのでいい感じだよ

679 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:17:43 ]
そこは誤解がないようにちゃんと主張しろよ

680 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:18:51 ]
.NET 4.0 では NumericUpDown コントロールはサポートされますか?

681 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:19:17 ]
デザイナーが作る範囲は所詮はwebページで言えばhtmlに毛の生えたことしかしてないからなあ

682 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 01:14:12 ]
.NET4な。CLRは4.0。

683 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 01:48:52 ]
blend上で動くなら何も心配しなくていいんじゃないの何かあるの?

684 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 02:07:24 ]
www.atmarkit.co.jp/fdotnet/vblab/uiframework_02/uiframework_02_04.html
上のサイトの中央付近から始まる「コレクション・オブジェクトへのバインド」のところを
動かそうとしたのですが下記のようなエラーとなり動きません。

>エラー 1 値 ' {Binding}' をプロパティ 'ItemsSource' に割り当てることができません。
>型 'IEnumerable' のプロパティ 'ItemsSource' は文字列として指定できません。

どのように対処すればよいのでしょうか?

685 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 02:14:01 ]
>>682
.NET 4 と .NET 4.0 の違いを詳しく教えてください。
区別すべきなのでしょうか?

686 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 02:15:10 ]
.NET 4.0 とかくことは意味があると思いますが、
.NET 4 と指摘していることについて詳しく教えてください

687 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 02:19:37 ]
>>684
素直にXAMLで書けよ



688 名前:684 mailto:sage [2010/04/28(水) 02:28:18 ]
自己解決しました。
ListBoxを使っているほかのサンプルと見比べたところ

<Grid x:Name="MainPanel" Loaded="MainPanel_Loaded">
<ListBox ItemsSource=" {Binding}"
DisplayMemberPath="Bmi"/>
</Grid>



<ListBox ItemsSource=" {Binding}"
{Binding}の前の半角スペースが原因で文字列として認識されていたようです。


>>687
質問に対する答えになってないと思いますが・・・

689 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 02:37:07 ]
VS2005 / .NET2.0 しか許されない環境で、
MVVMを模倣して手動でモデリングしたクラスプログラミングをすることは効率化になりますか?

690 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 02:37:15 ]
ガベージイン、ガベージアウト

691 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 02:43:57 ]
>>685-686
「.NET Framework 4」が正式名称。
.NET 4.0と言っても問題なく通じるので実用上の問題はない。わざわざ指摘する程の事でもないだろ>>682

692 名前:689 mailto:sage [2010/04/28(水) 03:17:09 ]
>>74が気になるなぁ。リフレクション調べてみるか…


693 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 03:21:53 ]
>>692
目指す目標としてXAMLなどがあるんだし、それと同じ仕組みにすれば
MVVMも可能じゃないかな?

まあ自前であれこれするより本当はWPFにするべきなんだが

ところでなんでそんな古い環境にこだわらないといけないんだろうw

694 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 05:26:27 ]
VとVMの疎結合さえ保てればとりあえずMVVMって言えるのかな?
・Viewを定義する「なにか」を設計する
 (WPFではXAML)
・「なにか」からViewを生成するライブラリを実装する
 (WPFではSystem.Presentationとかかな?)
・「なにか」と実行時バインドする方法も実装する
 (依存プロパティみたいな仕組み。ここでリフレクションががっつり登場)

マンドクセ・・・
XAMLの仕様はそのまま使って.net 2.0 WinFormsでもViewが構築できるライブラリ作れば
それなりに需要は・・・ないか

695 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 05:34:57 ]
一番重要なのはMとVVMと間のデカップリングだと思うよ。

696 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 05:37:58 ]
そういえば依存関係を切り離せるコンテナってあったよね?
あれは使えないの?

697 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 06:30:25 ]
ざっくりいうとVMはVからのMに対するブリッジって認識だがよろし?

>693
ぶっちゃけマシン性能にもよるんだろうが未だにWPF遅くね?
頻繁な更新が必要なデイトレアプリみたいなもんとか向いてなさそうなんだが。

>694
そげんな感じのもん作ったお。未だに2000とかにも配慮しなきゃいけなくてな( ^ω^)・・・



698 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 06:42:25 ]
DIコンテナは未だによくわからん・・・

699 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 07:39:00 ]
>>693-697
thx.
2005なのは、そういう環境でWindowsXpとWindowsCEの開発レッスンを受けてますw
自分が2000使ってるのでその点も嬉しいかなw

700 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 10:36:39 ]
>>696
CAL(Prism)なんかはUnityのDIコンテナ使ってるよ。

.NET4で追加されたMEFもかな、仕組みはDIコンテナっぽいが。

701 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 10:46:10 ]
ブラウザアプリでエクセルを操作するプログラムが入っててエクセルオブジェクトバージョンが違ってる人がアドレス開いてアプリ操作したらどうなるの?

702 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 10:52:10 ]
WPFが描画にGPUとCPUどっちを使ってるかどうすればわかるんですか?
自分のグラボがWPFに対応出来てるかしりたいんです

703 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 12:52:20 ]
>>702
WPF のパフォーマンス プロファイリング ツール
msdn.microsoft.com/ja-jp/library/aa969767(VS.90).aspx

704 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 13:55:32 ]
依存関係の向きがV→VM→Mとなってればいいだけのことで
VのコードビハインドでVとVMを手で結びつければバインディングはいらないよ
コマンドはVMのメソッドを呼び出せばいいだけ

705 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 14:11:36 ]
MVVMの目的はVMを単体テストすることだよ
それが必要ないんだったらコードビハインドをVMとみなして
XAMLで自身のプロパティにバインドするだけでいい
それが本来WPFで想定されていたバインディングの使い方

706 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 14:12:00 ]
C++ と XAML の組み合わせで使えないのはなんで?

707 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 14:22:27 ]
WPFはマネージコード専用だから
C++/CLIで使えないのは単にMSにやる気がないから
WPFはアンマネージドな世界との相互運用がしづらいしものすごく高レベルなので
わざわざC++/CLIから使うというのはちょっと考えられない



708 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 14:27:11 ]
>>703
WindowsSDKツールのV6.0A V6.1の両方ともWpfPerf アプリケーションが入ってません
どのSDKですか?

709 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 14:30:10 ]
ブラウザアプリでファイルにアクセスできないと何も出来なくないですか
同一サーバー上のファイルにアクセスするにはどうすればいいんですか


710 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 15:39:52 ]
>>709
下手に許すとローカルのファイルをいじり放題。その気になればスパイウェアも仕込み放題ということになってしまうから、それはできないことになってる

711 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 16:12:42 ]
>635で質問したものだが、こういう風にすることでとりあえず解決した
ideone.com/OemER


712 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 19:15:20 ]
>>708
V6.0 か V7.0。
以前は単体でもダウンロードできたけど、今は出来ないみたい。
(windowsclient.net/wpf/perf/wpf-perf-tool.aspx の previous version of WpfPerf)。
SDK を入れるなら Win32 Development Tools だけ入れればいい。

713 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 20:57:54 ]
XAML:<ListBox ItemsSource="Binding ."/>
結果:
B
i
n
d
i
n
g

.

あぁそうか…stringもIEnumerableだったな…  ってこんなんアリなのかw

714 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 23:35:19 ]
ちょっとワロタw

715 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 11:29:33 ]
>>712
できたありがとう
ハードウェアレンダー 1 になってた
サンプルサイト見てるとカクカクだから絶対CPUレンダーだと思ったのに・・・

716 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 17:32:32 ]
Shazzam(WPF/Silverlight用のシェーダエディタ)良いね
シンプルだけどWPFやSilverlightのシェーダ書くのには十分
C#側のコードを自動生成してくれる
WPFの見本みたいなかっこいいインターフェイス

717 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 19:15:45 ]
WPF入門者用のサイトいくつか教えてくれ



718 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 19:20:07 ]
ゲームパッド使えるの?

719 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 19:25:12 ]
>>718
XNA+WPFでいけ
sorceryforce.com/xna/tips_xnaonwpf.html

720 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 19:28:45 ]
>>717
ここだなあ
www.atmarkit.co.jp/fdotnet/vblab/uiframework_01/uiframework_01_01.html

WinFormで動的にコントロール追加したりオーナードローとかやったことある人なら
それほど違和感なくやれると思うがこれからって人は2010のマウスでデザインできる
ってを利用した方がいいかもね〜

721 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 22:40:11 ]
XNAだとXBOX用コントローラしか使えない
DirectXは参照できたからそっちで攻めるしかないんじゃない

722 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 22:50:42 ]
>>721
PS2パッドも使えるわ
適当なこと言うな

723 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 22:54:59 ]
>>723
使えねえよ

724 名前:723 mailto:sage [2010/04/29(木) 22:57:13 ]
>>722
つ、使えないと思います

725 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 22:58:27 ]
訂正来てよかったぜ
どう突っ込んでいいか悩んだぜ

726 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 22:58:49 ]
いやいや現に使ってるしw
なにいってんの?

727 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 23:01:09 ]
もしかしたら古いコンバーター使っているんじゃないのか?
1年前に買った奴だと普通に使えたわ



728 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 23:40:58 ]
>>726
そういうのもう良いから。

しかし DirectInput に未対応なのはなんでなんだろね。


729 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 23:45:29 ]
XNA+DirectXならXBOXコン以外使える
WPF+XNAならXBOXコンしか使えない

730 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 23:48:59 ]
>>720
全部読んでサンクス

読んで思ったのが
stackpanelに複数配置されたコンテンツを
そっくり別のコンテンツに取り替えるようなのって
xamlじゃ無理?
画像を表示してた場所をすべてボタンに変えるとか
そういうのはやっぱりC#でやるのかね

決まった雛形だら自由に作れるような感じだけど
GUIの表示をごっそり変えるのはどうするのかな

次はバインド読んでみるか

731 名前:デフォルトの名無しさん [2010/04/29(木) 23:50:28 ]
ListBox.ScrollIntoView を使うと、指定したアイテムを画面内に持ってくることができますが、
一番端に表示されます。

これを一番端ではなく、もうちょっと内側(2、3個要素が見えるような位置)にしたいんですが、
どうすればよいでしょうか?

732 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 23:50:34 ]
>>729
ああ、そういうことか

733 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 23:53:22 ]
>>731
そういうかゆいところに手が届かないこと多すぎるよな
それの対処にやたら時間かかって先に進めないのが
すごくイラつくわ
コアの部分に全然時間かけれない

734 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 00:05:49 ]
2,3個上の要素を指定すればいいのでは・・・

735 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 00:11:44 ]
やってみたら例外がでた!→範囲内に丸めろよ…

やっと初心者がWPFをやる時代が到来胸が熱くなるな

736 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 00:46:35 ]
WPF みたいな一部でしか使えないものは危険。

737 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 00:53:21 ]
意味わからん



738 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 02:00:54 ]
>>718
>>729
このスレならどうせWindows専用ってことだろうから
joyGetPosをP/InvokeすればXBOXコントローラ以外も使える。
Windows 95から存在するAPIなので安心。
ttp://msdn.microsoft.com/ja-jp/library/cc410473.aspx


739 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 10:12:31 ]
WPF勉強しているんだけど
初心者にはあえてこちらの方がお勧めのような気がする
GUI部分とロジック部分を自然に分離して記述するから
ソースも見やすくなりそう

740 名前:デフォルトの名無しさん [2010/04/30(金) 13:01:04 ]
実際に初心者に使わせたら大半をコードビハインドに記述、
ViewModelでViewを生成し、
ViewがViewModelのコントローラという素敵構造にしたんだが…

741 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 13:18:34 ]
>>720
これずーっと読んでいって
第 3回 “見た目”を決めるリソースとスタイル
で詰まった
むずぅ

742 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 13:24:51 ]
>>741
そう?
WinFormでもImageListなんてあるけどあれの汎用版みたいなもんでしょ

743 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 13:26:15 ]
おっと途中になった
スタイルはCSSと似てるし

744 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 17:50:21 ]
みんなExpression Blen使ってるの?

745 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 21:31:35 ]
>>744
これからWPF試してみたいのでExpression Blend 4が早くでないかなと思ってる。
VS10が出たし、もうすぐだと思ってたんだがアナウンスがないな…

746 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 22:57:26 ]
ブレンド無しで WPF ってwww

747 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 02:07:09 ]
Blendなんて飾りですよ
ControlTemplate生成にしかわからんのです



748 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 05:48:20 ]
別にボタンを星型にしたいとか思わないしなあ

749 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 08:02:08 ]
ボタンを星形にするだけがテンプレートじゃないだろ
WPFの胆はDataTemplateやItemTemplate
VSだけだと手書きしないといけない

750 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 09:16:53 ]
Blendなきゃだめなのか
WPF一気にやる気なくなったわ

751 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 10:52:30 ]
やる気も金もない人間は必要とされていないようだ。

752 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 10:52:45 ]
2010を使い.NET4でWPFを始めてみました
ググりながら試行錯誤してコマンドとコンテキストメニューを繋ごうとしています
キー操作だと正常に動作し、PlayPause_Executeが呼ばれるのですが、
コンテキストメニューは見出しやキーの表示は合っていますが、グレー表示のままで選択できません
何が悪いのでしょうか?

タイマで定期的にCommandManager.InvalidateRequerySuggested();してみても変わらないようですし
キーを押したときにはCheckCanExecuteCommandが呼ばれますが、それ以外では呼ばれないようです

public class Commands
{
public static RoutedUICommand PlayPause = new RoutedUICommand("再生/一時停止", "PlayPause", typeof(Commands),
new InputGestureCollection { new KeyGesture(Key.Space) });
}

XAMLで(はしょっています)
<Window xmlns:local="clr-namespace:hoge">
<StatusBar.ContextMenu>
<ContextMenu>
<MenuItem Command="{x:Static local:Commands.PlayPause}" IsEnabled="True" />
</ContextMenu>
</StatusBar.ContextMenu>

C#側コンストラクタで
CommandBindings.Add(new CommandBinding(Commands.PlayPause, PlayPause_Execute, CheckCanExecuteCommand));

private void CheckCanExecuteCommand(Object sender, CanExecuteRoutedEventArgs e) {
e.CanExecute = true;
}


753 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 11:04:27 ]
>>751
お前は一日中いろんなスレで煽るしかできない人間みたいだな

754 名前:752 mailto:sage [2010/05/01(土) 14:06:29 ]
>>752
どうやらContextMenuの場合だけのようで、理由はまだよくわかりませんが
とりあえずコンストラクタの最後にFocus();を入れることで回避できることがわかりました。

755 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 14:11:55 ]
>>753
お前は一日中いろんなスレで煽られるしかできない人間みたいだな

756 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 14:48:48 ]
Blendなんて飾りですよ。漢は手書き。マジで、Blendは非プログラマ向けの
ツールだから、開発者はUIをちゃんと設計して手書きした方が覚えがいい。

757 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 14:51:15 ]
うむ確かに手書きで覚えないとここまで分離した作りになると
わからなくなるぞ

JavaScript書くやつだってhtmlやCSSは知ってるだろ?

C#とXAMLの関係ってそういうもんだよ



758 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 14:59:42 ]
非プログラマ向けとかまで言い切っちゃうのは逆にblendを過大評価しすぎ
手書きすることとUIを設計することは全然関係ないし
細かいアニメーションとかスタイル指定とかblendあったほうがいいに決まってんじゃん

759 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 15:05:52 ]
設計して、手書きしろと薦めただけだから関係なんて求められてもねぇ。
設計してBlendで作れるんなら別にそれでいいけど、細かいアニメも
スタイルも、設計さえしてあれば、手書きできるから、敢えてBlendじゃ
無いとできないものって無いでしょ。

感覚的に作りたいという意味でBlendはプログラマ的じゃないよ。
でも、非プログラマに使わせて使えるかというと、使えないんだけど。
下手にソースを汚されても困るし、やっぱBlendは要らないなぁ。
存在が非常に中途半端。

760 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 15:09:09 ]
ああそれだとまあ同じように感じてるのかな
現状のblendはプログラマがデザイン的な作業をすることをサポートするツールって感じる
で俺には有用
アニメ付けるのにプレイバックなしで手書きとかやってらんない

761 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 15:48:50 ]
ホームページビルダー使えたからって
プログラミングができるわけじゃない

762 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 16:41:15 ]
html・cssの手書きとかあんな糞つまらん作業したって別に自慢には

763 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 17:57:43 ]
>762
cssは手書きしてた頃しか知らない。誰でもできる技術になった頃には
辞めてたから。XAMLもアホでもできるようになる前には、辞めて別の
何かを始めるよ。

元々は、つまんないとかの話じゃなくて、プログラマなら、デザイナで
操作するだけじゃなくて、ソースで中身を覚えろって話なんだけどね。

764 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 18:46:17 ]
何こいつ気持ち悪い

765 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 18:55:34 ]
わろた
手書きしてる俺カッケー(キリッ

766 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 18:58:13 ]
>>763
アホでもできるようなコードしか書けないから
すぐに追い抜かれて嫌になるのですね

767 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 19:00:47 ]
並のレベルのプログラマならblendの出力なんかいざとなればいつでも読めるんだからどうでもいい話



768 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 19:06:25 ]
>767
あぁ、いかにもやったこと無いって感じのコメントだね。
できるけど、嫌んなるよ。

769 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 19:24:15 ]
>>767
やればできる、っていうのとは あんまり関わりたくない・・・

770 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 19:24:57 ]
どうだろね
まだ本質的にややこしいGUIは作ってないし
blendで弄って出てきたXAML見てなるほどとか言っちゃうことがあるレベルだからわからんけど
でもXAML一緒に表示して弄れるんだからあんま問題なくない?

771 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 19:52:49 ]
>770
仕様的に危ない点もあるけど、デザイナが他にいるとして、見た目は
他人が作るわけだ。大概のデザイナはソースが読めないから、
ソースにコメントを入れるとか、読みやすいソースを書くというセンスも
無く、Blendが生成したソースがそのまま送られてくる。

書き直そうと思っても、こういうソースになった意図(内部的な実装仕様)
を読み解かないと、書き直せない。けど、デザイナは内部実装の仕様なんて
存在自体を知らんよ。

一人でやるなら自分の頭の中だけで解決するから、好きにすりゃいいと思う。

772 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 20:07:41 ]
まあ俺はもともとblendがデザイナとの協働ツールとして優れてるとは全然思ってないからね

773 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 20:24:49 ]
言い訳するな

774 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 20:50:34 ]
言い訳ってw
>現状のblendはプログラマがデザイン的な作業をすることをサポートするツールって感じる
先にこう書いてるよ

775 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 21:36:36 ]
ListViewで6000行10列ぐらいのDataTableバインディングしてるんだけど、スクロールが遅い
コンテナのリサイクルと仮想モードは有効にしてて、遅延スクロールは最終手段ってことで保留してて、
現状でこれなんで、デザインどころじゃないんだが
兄さん達はどうやって最適化してる?


776 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 22:05:12 ]
>>775
表示しているところだけListViewに追加する
他はダミー

777 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 22:10:14 ]
バインドするアイテムを制限するしかない気がする。



778 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 22:22:34 ]
そういうの必要になったらなにを試すかなと考えたら
直結するんじゃなくてvisualBrush化して並べるとかかなと思った
スクロールは早そうじゃない?

779 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 22:42:03 ]
>>778
visualBrushが分からんので調べたらようはハリボテか!それ頂き!

適当にブラーかけて描画省略してもよさそうだ、
兄さん達ありがとう。試行錯誤してみるよ


780 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 22:44:25 ]
描画というより重いのはレイアウトだろ

781 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 03:19:00 ]
ボタンをひし形にして疑似3Dゲームのように並べるにはどうすればいいだろう?
理想としてはウインドウの大きさに合わせて縮尺が変わってくれるといいのだが・・・

782 名前:781 mailto:sage [2010/05/02(日) 03:40:35 ]
イメージとしてはこんなのです
ttp://tsushima.2ch.at/s/news2ch61559.png
青のラインの上をめざしてて、下の方は避けた挙動です。

783 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 04:38:03 ]
SkewTransform弄れば擬似3Dっぽい表現は一発
ウィンドウのサイズに追従させるのはパっとはわからない

784 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 04:57:30 ]
一人で作る小規模アプリにWPFは効率悪すぎる

785 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 05:12:47 ]
>>783
自己レス
初期表示で傾斜つけたコンテナをウィンドウに収まるように配置しとけばリサイズには勝手に追従するなあ
uniformgridならうまく拡大してくれるような気がする

786 名前:781 mailto:sage [2010/05/02(日) 05:15:31 ]
>>783>>785
朝早くありがとう
ボタン単体で傾斜つけてグリッドに埋め込んだりしてたけどどうもおさまり悪いので
ボタンを入れ込むグリッドそのものを回転しちゃえって方向で今調べてました・・・
Blend使った方が楽かなあ・・・・
こいつが出力するxamlで勉強した方が速そう・・・orz

787 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 05:30:40 ]
UniformGridでかっちりできるね
縦横比によっては見えなくなっちゃうけど
blendはそりゃあったほうがいいでしょ
なかったらこんなのめんどくさくて試す気もしないもん



788 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 06:16:28 ]
こういうことか

ttp://tsushima.2ch.at/s/news2ch61563.png

ひし形の場合って影は下と右どっちが普通なんだろう

789 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 06:19:16 ]
おっとボタン上のテキストは正面向いてないといけないのかなー
それだと一手間いるな・・・

790 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 06:19:45 ]
>>788
まさにそういうのです
まあ影はこの際いらないかなあ・・・
将来的にはスキンも考えてるので

791 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 06:30:26 ]
>>788
あれですかね
ボタンを回転させるよりボタンを星形にするようにベクターをいじって
ひし形のボタンを作った方がいいかもしれないですね

ただそういう場合ってヒットエリアって矩形なんだろかそれとも作った形そのままなんだろうか・・・

792 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 06:56:29 ]
ちなみに>>787で作ったのはこんなのね
ttp://tsushima.2ch.at/s/news2ch61565.png
簡単だけどかなり見劣りするな・・・


793 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 07:25:32 ]
>>792
なるほど・・・
こちらでもBlend入れてデザインしてみましたが難しいですねw
ttp://tsushima.2ch.at/s/news2ch61568.png

ボタンそのものの形は変わるのですがあたり判定が元のままw

794 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 07:53:44 ]
あら?傾斜(擬似3D)じゃなくて回転でいいわけ?
だったらこういうのも
ttp://tsushima.2ch.at/s/news2ch61570.png
簡単・・・プレゼンターだけをグリッドとは逆に回転させるスタイルを定義する
判定も問題なしなんだけどこれだとリサイズしたときにむちゃくちゃになっちゃうな

795 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 07:59:31 ]
>>794
まあ本当はウインドウサイズ固定などができれば楽なんですけど
なにせウインドウズアプリなのでどうしてもウインドウサイズの変更は
できて当たり前みたいなところがあるのがつらいんですよね・・・

まあこんな状況だからウインドウズ関連で指を使ったタッチパネルUIが
普及しないんでしょうけど

細かいタッチ制度を出せるマウスもしくはスタイラスのような
ポインティングデバイス向けUIは得意なんでしょうけどね・・・

796 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 08:08:12 ]
>>793
ちゃんとClipしていれば当たり判定は問題ないはず
フォーカスの破線は自分で描画(もしくは消す)

ついでに、>>788のXAML
ttp://pastebin.com/TngzgvvF

797 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 08:37:34 ]
>>796
ありがとうございます

うーん難しいw



798 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 10:51:49 ]
というか、ゲーム作るならこれぐらいボタン使わないで描画しろよって話だな
中学生でもできるぞ

799 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 10:53:36 ]
WPFの3Dはゲーム作成の為にある

800 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 10:57:55 ]
データの視覚化とかトランジション効果とかの為だろ

801 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 10:59:10 ]
>>798
こういうUIを採用してるアプリが思い当らなかったのでゲームを例題にしてますが
ゲームじゃないですよ

802 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 10:59:52 ]
>例題にしてますが
>ゲームじゃないですよ
例題にしてますが
作っているのはゲームじゃないですよ

803 名前:デフォルトの名無しさん [2010/05/02(日) 11:06:15 ]
ttp://tsushima.2ch.at/s/news2ch61577.png
改造して影をつけてみたけど解像度あがると重い・・・

ttp://tsushima.2ch.at/s/news2ch61578.png
赤丸のあたりに別途ボタンをつけたりする方法がわからない・・orz

804 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 11:32:16 ]
Gridはレイヤーみたいな使い方もできるぞ
がんばれ

805 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 11:42:44 ]
道具に振り回されている感じだね
もっと頭使えよ

806 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 12:03:17 ]
gridの使い方もわからない男の人って…

807 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 13:10:06 ]
>>803
これが進化したらビューポイントが出来上がりそうだと思った。



808 名前:デフォルトの名無しさん [2010/05/02(日) 17:30:25 ]
>>804
はい

>>805
まあ休みの暇つぶしに始めたのでいろいろわからないことだらけなんですよね・・・

809 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 19:28:29 ]
>>803
これ格闘ゲームのキャラクター選択画面みたいだな

810 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 19:52:56 ]
こんなしょぼいもん作って喜んでるって
レベル低いな

811 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 20:04:58 ]
俺のデザイン最強(キリ
こんなしょぼいもん作って喜んでるって
レベル低いな(キリ

どんなUI作ってるんだろう見てみたい

812 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 20:06:23 ]
言ったもん勝ちだし。
MVPの俺が言うんだから確か。

813 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 20:11:33 ]
そういえばWinFormのClientSizeに相当する動きってどうやればいいんだろう

814 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 20:15:45 ]
コントロールとDataSetとの接続の仕方が判らない・・・
データベースを介さないと出来ないのか?

815 名前:781 mailto:sage [2010/05/02(日) 20:21:27 ]
>>810
新しいことへの挑戦中なのでこれもラフスケッチみたいな物ですよ
今後でるであろうタッチパネル搭載端末で使いやすいUIの研究ですから
ある程度決まった画面内やりとりするってのはゲームUIから学ぶことが
多いのでこれもその一つなんですよ

WPFの勉強も兼ねてですから
まあ偉い人にはわからないでしょうねw

816 名前:781 mailto:sage [2010/05/02(日) 20:31:16 ]
勝手にコメントしないでください

817 名前:781 mailto:sage [2010/05/02(日) 21:12:26 ]
じゃあ、俺が変わりに。

アノデスネ・・・。



818 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 21:16:50 ]
Fromの上にWPFのMediaElementを乗せた簡易メディアプレイヤーを
.NET4で完全WPFに書き換えたら重くなった
やってることはほとんど大差ないのに何故だ

819 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 23:36:30 ]
>>813
Window.ContentのWidthとかHeightじゃだめ?

820 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 23:43:45 ]
>>815
研究なら自分でやることだな
この程度のことを質問しているようじゃ
何も出来そうにないな

821 名前:781 mailto:sage [2010/05/03(月) 01:19:15 ]
>>820
その人成りすましなんですって・・
ID欲しいよ・・・

822 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 01:40:50 ]
>>819
ありがとうございます。

別件で
動的にコントロールを追加したりする場合はやはりC#側で制御するしかないんですかね?

823 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 03:13:09 ]
動的の度合いがわからない

824 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 08:03:33 ]
技術制約無視して条件分けとか言い出すんだから「xamlにコード埋め込め」でいいと思うよ

825 名前:818 mailto:sage [2010/05/03(月) 10:07:19 ]
>>818
動画の上にテキストを表示するためにOuterGlowBitmapEffectを使ってたけど
.NET4で削除された?のでDropShadowEffectに書き換えたがこれが重いらしい
ウインドウサイズをいじって動画と重ならないようにすると少しだけ軽くなり
非表示にしたりEffectを無効にするとぐんと軽くなる

ヘルプの.NET4の相違点のページかなんかで
描画方法が変わったとか何か書いてあった気がするけどページが見つからない

826 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 10:27:06 ]
BitmapEffectはパフォーマンスがクソだからというので
ピクセルシェーダでGPUを思いっきり使うようになったんだけど(.NET3.5〜)
ハードウェアが対応してないとか

827 名前:デフォルトの名無しさん [2010/05/03(月) 21:51:18 ]
>>825
俺は、動画はないけど文字列をいっぱい表示してるけど縁取りでDropShadowEffectを使ってみたら重いな、OuterGlowBitmapEffectも重かったけどね
ボカシの処理を無くして縁取りの処理をもっと軽くできないものか・・・



828 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 07:05:54 ]
>>827
ぼかしを無くして影を落とすだけでも重かったので、妥協して半透明の背景をつけることにした
BitmapEffectが重いからって話だったはずなのにこっちの方が重くなるのが納得いかない
グラボは6800XTだからShader 2.0には対応してるはずだけど3.0が必要なのかな


829 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 15:31:17 ]
カスタムコントロールにResourceDictionaryを定義した
xamlファイルを結びつけるのはどうすればいい?
カスタムコントロールのコードからリソース内の表示用部品を利用したいのだけれど。

830 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 17:01:51 ]
>>829
xaml の読み込み
ResourceDictionary.MergedDictionaries
or
XamlReader.Load(file)

部品の取得
FrameworkElement.FindResource(key)
or
ResourceDictionary[key]

831 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 18:34:43 ]
>>829
これでも
ResourceDictionary rd = new ResourceDictionary();
rd.Source = new Uri("pack://application:,,,/MyApp;component/Dictionary1.xaml", UriKind.Absolute);
string myValue = rd["MyValue"] as string;

832 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 18:44:44 ]
>>830-831
さんくす!
使うリソースは1つだけなので
this.Resources.Source = new Uri("pack://application:,,,/testcontrol/test.xaml");
でいけた。this.Content = this.FindResource("button");てな感じで使えるね。

これでようやくコントロールの表示部分に取り掛かれるわ

833 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 19:03:40 ]
日本のメーカーPCはグラボ非搭載が主流だからWPFはきついな

834 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 19:28:07 ]
誰一人つられないんだからね

835 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 00:38:09 ]
現在主流のCore-iモデルの内蔵はintel HD Graphicsで
そのコンパネがWPFだったりするんだけどな

836 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 01:34:12 ]
WPFってなんだろう

837 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 01:44:00 ]
人生・・・かな?



838 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 03:17:03 ]
鉄板麺!!

839 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 16:50:17 ]
WPFはAdobeのあれをパクったような感じ

840 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 08:43:05 ]
国連になんかあったな

841 名前:デフォルトの名無しさん [2010/05/06(木) 23:49:46 ]
Window の中に Grid が1つあり、
その中に同じ大きさの Viewbox を3つ配置しています。
3つのViewboxの位置は同じで、重なって配置されます。

それぞれのViewboxにはGridを配置し、その中には
・透過色を指定したPNG画像と
・Rectangleを1つずつ配置しています。
3枚の画像は同じ大きさで、UniformToFill にしています。
Rectangleは、各画像の背景色の領域中に配置するようにしています。
また、Rectangleはクリックされると Fill が変わるようにしています。

このとき、一番階層が高い Viewbox 内のRectangleしかクリックに反応してくれません。
2番目、3番目のViewbox内のRectangleも反応させるにはどうしたら良いのでしょうか?

ソースを以下にUPしましたので、よろしくお願いいたします。
ttp://www.dotup.org/uploda/www.dotup.org866125.zip.html
pass: wpf

842 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 00:02:32 ]
現象が発生する最小のプログラムでないと誰も見ないぞ
単純に一番目にRect三つ配置すればいいんじゃねーの

843 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 00:05:50 ]
>>841
Grid.Row, Grid.Column を分けずに、一つのセル(?)でやってるから、最後の Viewbox がイベントとっちゃって、その兄弟にはイベントが伝播しない。
素直に Canvas 使うか、Grid.Row を3つに分けなさい。

844 名前:841 mailto:sage [2010/05/07(金) 00:12:10 ]
>>842
急いで書いたため、情報不十分でした。
各Viewboxは個別に移動、拡縮をしたいのです。
(それに応じでViewbox内のオブジェクトも、移動+拡縮させたいです)
ですので、一番目にRect3つ配置ではダメなのです。

>>843
ありがとうございます。
いただいた情報を元に考えて見ます。

845 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 00:36:07 ]
>>844
Grid を入れ子にすれば、Grid で MouseUp をとるように変更すればできたけど・・・
もう少しスマートな方法ないかね。Viewbox 使わなければ Background に Transparent 設定してイベント透過させられるのだけど。

<Grid MouseUp="rectangle_MouseUp">
  <Viewbox />
  <Grid MouseUp="rectangle_MouseUp">
    <Viewbox />
    <Grid MouseUp="rectangle_MouseUp">
      <Viewbox />
    </Grid>
  </Grid>
</Grid>

-----------
private void rectangle_MouseUp(object sender, MouseButtonEventArgs e)
{
    ((((sender as Grid).Children[0] as Viewbox).Child as Grid).Children[1] as Rectangle).Fill = Brushes.Red;
}

846 名前:845 mailto:sage [2010/05/07(金) 00:40:27 ]
Grid 全体で MouseUp とってしまうから駄目だった。
忘れてくれ。

847 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 00:43:11 ]
つまり透過してるので最前面でFill状態の画像をムシして
その後ろの画像にヒット判定させろ?

無理じゃね?



848 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 01:05:45 ]
いや3ついっぺんにクリックされたように扱いたいって話じゃないの?

849 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 01:09:17 ]
>>844
読み流してた
つまり>>847なんだなごめん

850 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 01:10:43 ]
>>848
それだったら全面のやつがイベント受けたらほかの物にも伝えるとかそんなんでいいんじゃね?
それか画像を管理してるコンテナ、この場合はGridがクリックイベント拾うとか

851 名前:841 mailto:sage [2010/05/07(金) 01:12:58 ]
皆さん、ありがとうございます。
やはり透過処理していようとも、画像の領域から
イベントを透過させることは無理(難しい?)みたいですね。

>>847-848
一番の理想は、”見えているオブジェクトがイベントを拾う”です。
うpしたものを見ていただけているか分かりませんが、
例えば2番目のViewboxを仮に下方向にAnimationさせた場合、
2番目のViewboxに配置したRectangleは「黒色」の後ろに隠れます。
このとき、隠れたRectangleはクリックできないようにしたいです。

が、それはあくまでも理想であり、3つヒットでも出来るなら嬉しいです。

852 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 01:43:08 ]
一番上が拾うんでいいならTunnelじゃいかんのかね

853 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 01:50:25 ]
しかしwindowsはマウスありきでできてるから
こういうGUIまわりは作りにくいな

854 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 02:04:46 ]
>>852
TunnelってPreview〜のあれ?
重ねたImageに対してトンネルなんてできるのか?

855 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 21:31:34 ]
>>841
ViewBox内のImageに
IsHitTestVisible="False"
をいれたら下のRectangleも反応したよ

ただ、これだと隠れたRectangleをクリックさせない
というようなことはできないけど

856 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 22:00:45 ]
Imageに不透明な部分だけマスクするClipを指定すればいいんじゃないの?

857 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 23:09:28 ]
4の良書でないかなぁ



858 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 05:54:20 ]
WPF4のデザイナで配置したコントロールのフローがWPF3と違いますよね…?

ウィンドウのリサイズを行うと、WPF3だと勝手に連動してコントロールのサイズが変わるのに、WPF4だとウィンドウだけしかリサイズされない…。
結果、プロパティやXAMLをちょこっと変更しなければいけないのだけれど。

859 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 06:52:09 ]
update
code.msdn.microsoft.com/WPFShell/Release/ProjectReleases.aspx?ReleaseId=4332

860 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 10:34:01 ]
>>858
コントロールの上下左右に小さな円があるだろ
それクリックするとコンテナの端からの距離が固定される(WinFormsのAnchor相当)

861 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 11:12:39 ]
WPFのフォントレンダリングをフォームアプリと同じにすることはできないんでしょうか?
VS2010がフォームと同じフォント表示になったのに、
自分で作ったWPFアプリケーションのフォントレンダリングが前のままです。

862 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 11:59:32 ]
同じというのは違うけど。
3のソースを4でコンパイルするだけじゃ駄目。

TextOptions.TextFormattingMode
TextOptions.TextRenderingMode


863 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 13:08:49 ]
FlowDocumentに表示されている内容の表示上のサイズを取得する方法はありますか?

864 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 22:23:02 ]
>>860
クリックですか。
クリックしたところ、希望の動作になりました。

ありがとうございました。

865 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 21:59:51 ]
int型のプロパティPercentがあって、
それをバインドしているTextBlockでは、後ろに"%"を付けたいときって
どうすればいい?

866 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 22:01:19 ]
IValueConverter
するまでもないな、StringFormat

867 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 22:17:23 ]
866 なんか分かりづらくなっちゃった
{Binding Path=Percent, StringFormat=0\\%}
これでいいのか?
マークアップ拡張内は書式指定文字列が訳分からんことになるな



868 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 17:42:43 ]
>>867
おおーまさしくこれだ。
なんで円記号が2つも…って思ったけどマークアップ拡張内では円記号もエスケープ必須か

869 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 17:45:00 ]
途中で送信しちまった。>>867サンクス

870 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 18:13:55 ]
GUIプログラミングの初心者は、WPFから入るよりForm使った方がいいのかな?
WPFはまだ情報量少ないみたいだし

871 名前:デフォルトの名無しさん [2010/05/12(水) 18:18:10 ]
>>870
最終的に何を作るかでも変わるけど似てるようでかなり違うからなあ
下手にFormの方を覚えるとWPFだと戸惑うこともあるよ

872 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 18:21:51 ]
GUIプログラミングはWPFから入ったけど今更Formなんて勉強する気しないよ

873 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 19:48:05 ]
>>872
最初からWPFって、どうやって学習した?
後学のために教えて欲しい。

874 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 19:53:59 ]
>>873
ネットで情報収集。殆どはMSDNから。
書籍はエッセンシャルWPFだけ買った。
質問はここやC#スレで。
まだ全体は勉強してないけどな。目的のアプリ作るには一部だけでも十分。
C#と.NET Frameworkも同時にだったからだいぶかかったが。

875 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 19:54:50 ]
WPFって動的にコントロールを生成しちゃいけないみたいな感じが面倒

876 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 20:02:06 ]
え?DataTemplate使えば必然的に動的に生成しまくりだろ?

877 名前:デフォルトの名無しさん [2010/05/12(水) 20:03:39 ]
>>875
そんなことはないんじゃないの?
WPF側で名前つけておけばFormでやてったようなことはできるし
そういうのがだめってのならWPFなりの書き方すればいいだけだし








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<192KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef