[表示 : 全て 最新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/

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