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/
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なりの書き方すればいいだけだし