WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
2009/12/27(日) 10:58:30て語るスレ。.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/
0800デフォルトの名無しさん
2010/05/02(日) 10:57:550801デフォルトの名無しさん
2010/05/02(日) 10:59:10こういうUIを採用してるアプリが思い当らなかったのでゲームを例題にしてますが
ゲームじゃないですよ
0802デフォルトの名無しさん
2010/05/02(日) 10:59:52>ゲームじゃないですよ
例題にしてますが
作っているのはゲームじゃないですよ
0803デフォルトの名無しさん
2010/05/02(日) 11:06:15改造して影をつけてみたけど解像度あがると重い・・・
ttp://tsushima.2ch.at/s/news2ch61578.png
赤丸のあたりに別途ボタンをつけたりする方法がわからない・・orz
0804デフォルトの名無しさん
2010/05/02(日) 11:32:16がんばれ
0805デフォルトの名無しさん
2010/05/02(日) 11:42:44もっと頭使えよ
0806デフォルトの名無しさん
2010/05/02(日) 12:03:170807デフォルトの名無しさん
2010/05/02(日) 13:10:06これが進化したらビューポイントが出来上がりそうだと思った。
0809デフォルトの名無しさん
2010/05/02(日) 19:28:29これ格闘ゲームのキャラクター選択画面みたいだな
0810デフォルトの名無しさん
2010/05/02(日) 19:52:56レベル低いな
0811デフォルトの名無しさん
2010/05/02(日) 20:04:58こんなしょぼいもん作って喜んでるって
レベル低いな(キリ
どんなUI作ってるんだろう見てみたい
0812デフォルトの名無しさん
2010/05/02(日) 20:06:23MVPの俺が言うんだから確か。
0813デフォルトの名無しさん
2010/05/02(日) 20:11:330814デフォルトの名無しさん
2010/05/02(日) 20:15:45データベースを介さないと出来ないのか?
0815781
2010/05/02(日) 20:21:27新しいことへの挑戦中なのでこれもラフスケッチみたいな物ですよ
今後でるであろうタッチパネル搭載端末で使いやすいUIの研究ですから
ある程度決まった画面内やりとりするってのはゲームUIから学ぶことが
多いのでこれもその一つなんですよ
WPFの勉強も兼ねてですから
まあ偉い人にはわからないでしょうねw
0816781
2010/05/02(日) 20:31:160817781
2010/05/02(日) 21:12:26アノデスネ・・・。
0818デフォルトの名無しさん
2010/05/02(日) 21:16:50.NET4で完全WPFに書き換えたら重くなった
やってることはほとんど大差ないのに何故だ
0819デフォルトの名無しさん
2010/05/02(日) 23:36:30Window.ContentのWidthとかHeightじゃだめ?
0820デフォルトの名無しさん
2010/05/02(日) 23:43:45研究なら自分でやることだな
この程度のことを質問しているようじゃ
何も出来そうにないな
0822デフォルトの名無しさん
2010/05/03(月) 01:40:50ありがとうございます。
別件で
動的にコントロールを追加したりする場合はやはりC#側で制御するしかないんですかね?
0823デフォルトの名無しさん
2010/05/03(月) 03:13:090824デフォルトの名無しさん
2010/05/03(月) 08:03:330825818
2010/05/03(月) 10:07:19動画の上にテキストを表示するためにOuterGlowBitmapEffectを使ってたけど
.NET4で削除された?のでDropShadowEffectに書き換えたがこれが重いらしい
ウインドウサイズをいじって動画と重ならないようにすると少しだけ軽くなり
非表示にしたりEffectを無効にするとぐんと軽くなる
ヘルプの.NET4の相違点のページかなんかで
描画方法が変わったとか何か書いてあった気がするけどページが見つからない
0826デフォルトの名無しさん
2010/05/03(月) 10:27:06ピクセルシェーダでGPUを思いっきり使うようになったんだけど(.NET3.5〜)
ハードウェアが対応してないとか
0827デフォルトの名無しさん
2010/05/03(月) 21:51:18俺は、動画はないけど文字列をいっぱい表示してるけど縁取りでDropShadowEffectを使ってみたら重いな、OuterGlowBitmapEffectも重かったけどね
ボカシの処理を無くして縁取りの処理をもっと軽くできないものか・・・
0828デフォルトの名無しさん
2010/05/04(火) 07:05:54ぼかしを無くして影を落とすだけでも重かったので、妥協して半透明の背景をつけることにした
BitmapEffectが重いからって話だったはずなのにこっちの方が重くなるのが納得いかない
グラボは6800XTだからShader 2.0には対応してるはずだけど3.0が必要なのかな
0829デフォルトの名無しさん
2010/05/04(火) 15:31:17xamlファイルを結びつけるのはどうすればいい?
カスタムコントロールのコードからリソース内の表示用部品を利用したいのだけれど。
0830デフォルトの名無しさん
2010/05/04(火) 17:01:51xaml の読み込み
ResourceDictionary.MergedDictionaries
or
XamlReader.Load(file)
部品の取得
FrameworkElement.FindResource(key)
or
ResourceDictionary[key]
0831デフォルトの名無しさん
2010/05/04(火) 18:34:43これでも
ResourceDictionary rd = new ResourceDictionary();
rd.Source = new Uri("pack://application:,,,/MyApp;component/Dictionary1.xaml", UriKind.Absolute);
string myValue = rd["MyValue"] as string;
0832デフォルトの名無しさん
2010/05/04(火) 18:44:44さんくす!
使うリソースは1つだけなので
this.Resources.Source = new Uri("pack://application:,,,/testcontrol/test.xaml");
でいけた。this.Content = this.FindResource("button");てな感じで使えるね。
これでようやくコントロールの表示部分に取り掛かれるわ
0833デフォルトの名無しさん
2010/05/04(火) 19:03:400834デフォルトの名無しさん
2010/05/04(火) 19:28:070835デフォルトの名無しさん
2010/05/05(水) 00:38:09そのコンパネがWPFだったりするんだけどな
0836デフォルトの名無しさん
2010/05/05(水) 01:34:120837デフォルトの名無しさん
2010/05/05(水) 01:44:000838デフォルトの名無しさん
2010/05/05(水) 03:17:030839デフォルトの名無しさん
2010/05/05(水) 16:50:170840デフォルトの名無しさん
2010/05/06(木) 08:43:050841デフォルトの名無しさん
2010/05/06(木) 23:49:46その中に同じ大きさの 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
0842デフォルトの名無しさん
2010/05/07(金) 00:02:32単純に一番目にRect三つ配置すればいいんじゃねーの
0843デフォルトの名無しさん
2010/05/07(金) 00:05:50Grid.Row, Grid.Column を分けずに、一つのセル(?)でやってるから、最後の Viewbox がイベントとっちゃって、その兄弟にはイベントが伝播しない。
素直に Canvas 使うか、Grid.Row を3つに分けなさい。
0844841
2010/05/07(金) 00:12:10急いで書いたため、情報不十分でした。
各Viewboxは個別に移動、拡縮をしたいのです。
(それに応じでViewbox内のオブジェクトも、移動+拡縮させたいです)
ですので、一番目にRect3つ配置ではダメなのです。
>>843
ありがとうございます。
いただいた情報を元に考えて見ます。
0845デフォルトの名無しさん
2010/05/07(金) 00:36:07Grid を入れ子にすれば、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;
}
0846845
2010/05/07(金) 00:40:27忘れてくれ。
0847デフォルトの名無しさん
2010/05/07(金) 00:43:11その後ろの画像にヒット判定させろ?
無理じゃね?
0848デフォルトの名無しさん
2010/05/07(金) 01:05:450849デフォルトの名無しさん
2010/05/07(金) 01:09:17読み流してた
つまり>>847なんだなごめん
0850デフォルトの名無しさん
2010/05/07(金) 01:10:43それだったら全面のやつがイベント受けたらほかの物にも伝えるとかそんなんでいいんじゃね?
それか画像を管理してるコンテナ、この場合はGridがクリックイベント拾うとか
0851841
2010/05/07(金) 01:12:58やはり透過処理していようとも、画像の領域から
イベントを透過させることは無理(難しい?)みたいですね。
>>847-848
一番の理想は、”見えているオブジェクトがイベントを拾う”です。
うpしたものを見ていただけているか分かりませんが、
例えば2番目のViewboxを仮に下方向にAnimationさせた場合、
2番目のViewboxに配置したRectangleは「黒色」の後ろに隠れます。
このとき、隠れたRectangleはクリックできないようにしたいです。
が、それはあくまでも理想であり、3つヒットでも出来るなら嬉しいです。
0852デフォルトの名無しさん
2010/05/07(金) 01:43:080853デフォルトの名無しさん
2010/05/07(金) 01:50:25こういうGUIまわりは作りにくいな
0854デフォルトの名無しさん
2010/05/07(金) 02:04:46TunnelってPreview〜のあれ?
重ねたImageに対してトンネルなんてできるのか?
0855デフォルトの名無しさん
2010/05/07(金) 21:31:34ViewBox内のImageに
IsHitTestVisible="False"
をいれたら下のRectangleも反応したよ
ただ、これだと隠れたRectangleをクリックさせない
というようなことはできないけど
0856デフォルトの名無しさん
2010/05/07(金) 22:00:450857デフォルトの名無しさん
2010/05/07(金) 23:09:280858デフォルトの名無しさん
2010/05/08(土) 05:54:20ウィンドウのリサイズを行うと、WPF3だと勝手に連動してコントロールのサイズが変わるのに、WPF4だとウィンドウだけしかリサイズされない…。
結果、プロパティやXAMLをちょこっと変更しなければいけないのだけれど。
0859デフォルトの名無しさん
2010/05/08(土) 06:52:09http://code.msdn.microsoft.com/WPFShell/Release/ProjectReleases.aspx?ReleaseId=4332
0860デフォルトの名無しさん
2010/05/08(土) 10:34:01コントロールの上下左右に小さな円があるだろ
それクリックするとコンテナの端からの距離が固定される(WinFormsのAnchor相当)
0861デフォルトの名無しさん
2010/05/08(土) 11:12:39VS2010がフォームと同じフォント表示になったのに、
自分で作ったWPFアプリケーションのフォントレンダリングが前のままです。
0862デフォルトの名無しさん
2010/05/08(土) 11:59:323のソースを4でコンパイルするだけじゃ駄目。
TextOptions.TextFormattingMode
TextOptions.TextRenderingMode
0863デフォルトの名無しさん
2010/05/08(土) 13:08:490864デフォルトの名無しさん
2010/05/08(土) 22:23:02クリックですか。
クリックしたところ、希望の動作になりました。
ありがとうございました。
0865デフォルトの名無しさん
2010/05/10(月) 21:59:51それをバインドしているTextBlockでは、後ろに"%"を付けたいときって
どうすればいい?
0866デフォルトの名無しさん
2010/05/10(月) 22:01:19するまでもないな、StringFormat
0867デフォルトの名無しさん
2010/05/10(月) 22:17:23{Binding Path=Percent, StringFormat=0\\%}
これでいいのか?
マークアップ拡張内は書式指定文字列が訳分からんことになるな
0868デフォルトの名無しさん
2010/05/12(水) 17:42:43おおーまさしくこれだ。
なんで円記号が2つも…って思ったけどマークアップ拡張内では円記号もエスケープ必須か
0869デフォルトの名無しさん
2010/05/12(水) 17:45:000870デフォルトの名無しさん
2010/05/12(水) 18:13:55WPFはまだ情報量少ないみたいだし
0871デフォルトの名無しさん
2010/05/12(水) 18:18:10最終的に何を作るかでも変わるけど似てるようでかなり違うからなあ
下手にFormの方を覚えるとWPFだと戸惑うこともあるよ
0872デフォルトの名無しさん
2010/05/12(水) 18:21:510873デフォルトの名無しさん
2010/05/12(水) 19:48:05最初からWPFって、どうやって学習した?
後学のために教えて欲しい。
0874デフォルトの名無しさん
2010/05/12(水) 19:53:59ネットで情報収集。殆どはMSDNから。
書籍はエッセンシャルWPFだけ買った。
質問はここやC#スレで。
まだ全体は勉強してないけどな。目的のアプリ作るには一部だけでも十分。
C#と.NET Frameworkも同時にだったからだいぶかかったが。
0875デフォルトの名無しさん
2010/05/12(水) 19:54:500876デフォルトの名無しさん
2010/05/12(水) 20:02:060877デフォルトの名無しさん
2010/05/12(水) 20:03:39そんなことはないんじゃないの?
WPF側で名前つけておけばFormでやてったようなことはできるし
そういうのがだめってのならWPFなりの書き方すればいいだけだし
0878デフォルトの名無しさん
2010/05/12(水) 20:24:03.NET FrameworkっていうとC#とかのライブラリみたいなものだよね?
C#学習するのと.NET学習するのって違うの?
初心者なんで見当違いなこといってたらすまん
0879デフォルトの名無しさん
2010/05/12(水) 20:28:17.NET Framework上で動く中間コードを作るための言語が
C#やVB.netだよ
0880デフォルトの名無しさん
2010/05/12(水) 20:53:46英文法と英会話
0881デフォルトの名無しさん
2010/05/12(水) 23:18:460882878
2010/05/12(水) 23:24:39少しは理解が深まった、サンクス
0883デフォルトの名無しさん
2010/05/12(水) 23:39:31ありがとう。やっぱりネットか。
早く最新状態に即した書籍が出てくれないかなと思うんだが、欲しい情報は
ネットを探しまくるしかないんだな。
0884デフォルトの名無しさん
2010/05/13(木) 02:46:40> C#が言語で、.NETはそれらの言語で使えるライブラリ群
前後逆の方がよくね?w
0885デフォルトの名無しさん
2010/05/13(木) 03:12:59言語の方が具体的で、ライブラリの方が抽象的だから。
880は、くその役にも立たない例えの見本みたいなもんだと思う。
0886デフォルトの名無しさん
2010/05/13(木) 15:20:36カラムのある領域外では選択不能にするにはどこ弄るのだろう?
ItemContainerStyle?
0887デフォルトの名無しさん
2010/05/13(木) 17:16:33マウスで矩形選択っぽく範囲選択できるようにしたいだけなのに…
0888デフォルトの名無しさん
2010/05/13(木) 17:33:31こういうの?
矩形ってのがWinFormのDataGridViewでの[4,6]-[7,8]までのセルを選択、とか言うのなら多分GridViewじゃ無理だが
0889デフォルトの名無しさん
2010/05/13(木) 22:40:53最高の回答だ
だがなんでこんな微妙な部分で退化してんだ
楽しくなって来た所なのになー
0890デフォルトの名無しさん
2010/05/13(木) 23:18:08結局SilverlightではListView削られてDataGrid追加された
WPF Toolkitか.NET4で逆輸入されたDataGrid使ったら?
0891デフォルトの名無しさん
2010/05/13(木) 23:56:27WinFormをWPFで呼び出しています。
Windows.FormsIntegrationを参照して、
UserControl1には、400x400のグループボックスがあります。
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
xmlns:ts="clr-namespace:WpfApplication1"
Title="MainWindow" Height="500" Width="500">
<Grid>
<WindowsFormsHost>
<ts:UserControl1 />
</WindowsFormsHost>
</Grid>
</Window>
とMainWindow.xamlで呼び出しても400x400の大きさになってくれません。
なぜでしょう??
0892デフォルトの名無しさん
2010/05/13(木) 23:59:01これHeightとWidthをautoにしたらなるんじゃね
0893デフォルトの名無しさん
2010/05/14(金) 00:13:42レスありがとうございます。Autoやってみましたが、駄目でした。
0894デフォルトの名無しさん
2010/05/14(金) 00:18:46<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
</Grid>
0895891
2010/05/14(金) 00:26:450896デフォルトの名無しさん
2010/05/14(金) 00:45:41<ts:UserControl1 />
</WindowsFormsHost>
でも下長になる。
使用モニタ AcerB273HU 2048x1152、
フラットスクウェアの1280x1024のPCでやってみましたが下に長くなってしまいます。
ペイントに張り付けてピクセル測ってみると 約 横230px 縦300px となります。
0897デフォルトの名無しさん
2010/05/14(金) 01:11:03public UserControl1()
{
InitializeComponent();
Graphics g = this.CreateGraphics();
this.groupBox1.Width = (int)(400 * 72 / g.DpiX);
this.groupBox1.Height = (int)(400 * 72 / g.DpiY);
}
にしても駄目でした。Formでしか動作しないカメラ実況をWPF上の
どうしても表示させないといけないのですが。。。
0898デフォルトの名無しさん
2010/05/14(金) 03:54:03思うように動かないもどかしさで強烈にイライラしてきた
0899デフォルトの名無しさん
2010/05/14(金) 04:04:51イミフ
0900デフォルトの名無しさん
2010/05/14(金) 04:15:11が正確みたいだ
選択されているセルの上でもう一度クリックするとMouseDownが来る
これ誰が得する仕様なんだオイ
レス数が900を超えています。1000を超えると表示できなくなるよ。