WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5at TECH
WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5 - 暇つぶし2ch729:デフォルトの名無しさん
10/04/29 23:45:29
XNA+DirectXならXBOXコン以外使える
WPF+XNAならXBOXコンしか使えない

730:デフォルトの名無しさん
10/04/29 23:48:59
>>720
全部読んでサンクス

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

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

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

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

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

732:デフォルトの名無しさん
10/04/29 23:50:34
>>729
ああ、そういうことか

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

734:デフォルトの名無しさん
10/04/30 00:05:49
2,3個上の要素を指定すればいいのでは・・・

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

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

736:デフォルトの名無しさん
10/04/30 00:46:35
WPF みたいな一部でしか使えないものは危険。

737:デフォルトの名無しさん
10/04/30 00:53:21
意味わからん

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


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

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

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

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

743:デフォルトの名無しさん
10/04/30 13:26:15
おっと途中になった
スタイルはCSSと似てるし

744:デフォルトの名無しさん
10/04/30 17:50:21
みんなExpression Blen使ってるの?

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

746:デフォルトの名無しさん
10/04/30 22:57:26
ブレンド無しで WPF ってwww

747:デフォルトの名無しさん
10/05/01 02:07:09
Blendなんて飾りですよ
ControlTemplate生成にしかわからんのです

748:デフォルトの名無しさん
10/05/01 05:48:20
別にボタンを星型にしたいとか思わないしなあ

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

750:デフォルトの名無しさん
10/05/01 09:16:53
Blendなきゃだめなのか
WPF一気にやる気なくなったわ

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

752:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/05/01 11:04:27
>>751
お前は一日中いろんなスレで煽るしかできない人間みたいだな

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

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

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

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

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

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

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

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

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

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

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

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

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

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

764:デフォルトの名無しさん
10/05/01 18:46:17
何こいつ気持ち悪い

765:デフォルトの名無しさん
10/05/01 18:55:34
わろた
手書きしてる俺カッケー(キリッ

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

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

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

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

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

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

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

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

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

773:デフォルトの名無しさん
10/05/01 20:24:49
言い訳するな

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

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


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

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

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

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

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


780:デフォルトの名無しさん
10/05/01 22:44:25
描画というより重いのはレイアウトだろ

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

782:781
10/05/02 03:40:35
イメージとしてはこんなのです
URLリンク(tsushima.2ch.at)
青のラインの上をめざしてて、下の方は避けた挙動です。

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

784:デフォルトの名無しさん
10/05/02 04:57:30
一人で作る小規模アプリにWPFは効率悪すぎる

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

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

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

788:デフォルトの名無しさん
10/05/02 06:16:28
こういうことか

URLリンク(tsushima.2ch.at)

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

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

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

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

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

792:デフォルトの名無しさん
10/05/02 06:56:29
ちなみに>>787で作ったのはこんなのね
URLリンク(tsushima.2ch.at)
簡単だけどかなり見劣りするな・・・


793:デフォルトの名無しさん
10/05/02 07:25:32
>>792
なるほど・・・
こちらでもBlend入れてデザインしてみましたが難しいですねw
URLリンク(tsushima.2ch.at)

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

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

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

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

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

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

ついでに、>>788のXAML
URLリンク(pastebin.com)

797:デフォルトの名無しさん
10/05/02 08:37:34
>>796
ありがとうございます

うーん難しいw

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

799:デフォルトの名無しさん
10/05/02 10:53:36
WPFの3Dはゲーム作成の為にある

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

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

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

803:デフォルトの名無しさん
10/05/02 11:06:15
URLリンク(tsushima.2ch.at)
改造して影をつけてみたけど解像度あがると重い・・・

URLリンク(tsushima.2ch.at)
赤丸のあたりに別途ボタンをつけたりする方法がわからない・・orz

804:デフォルトの名無しさん
10/05/02 11:32:16
Gridはレイヤーみたいな使い方もできるぞ
がんばれ

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

806:デフォルトの名無しさん
10/05/02 12:03:17
gridの使い方もわからない男の人って…

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

808:デフォルトの名無しさん
10/05/02 17:30:25
>>804
はい

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

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

810:デフォルトの名無しさん
10/05/02 19:52:56
こんなしょぼいもん作って喜んでるって
レベル低いな

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

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

812:デフォルトの名無しさん
10/05/02 20:06:23
言ったもん勝ちだし。
MVPの俺が言うんだから確か。

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

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

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

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

816:781
10/05/02 20:31:16
勝手にコメントしないでください

817:781
10/05/02 21:12:26
じゃあ、俺が変わりに。

アノデスネ・・・。

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

819:デフォルトの名無しさん
10/05/02 23:36:30
>>813
Window.ContentのWidthとかHeightじゃだめ?

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

821:781
10/05/03 01:19:15
>>820
その人成りすましなんですって・・
ID欲しいよ・・・

822:デフォルトの名無しさん
10/05/03 01:40:50
>>819
ありがとうございます。

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

823:デフォルトの名無しさん
10/05/03 03:13:09
動的の度合いがわからない

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

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

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

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

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

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


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

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

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

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

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

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

834:デフォルトの名無しさん
10/05/04 19:28:07
誰一人つられないんだからね

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

836:デフォルトの名無しさん
10/05/05 01:34:12
WPFってなんだろう

837:デフォルトの名無しさん
10/05/05 01:44:00
人生・・・かな?

838:デフォルトの名無しさん
10/05/05 03:17:03
鉄板麺!!

839:デフォルトの名無しさん
10/05/05 16:50:17
WPFはAdobeのあれをパクったような感じ

840:デフォルトの名無しさん
10/05/06 08:43:05
国連になんかあったな

841:デフォルトの名無しさん
10/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しましたので、よろしくお願いいたします。
URLリンク(www.dotup.org)
pass: wpf

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

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

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

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

845:デフォルトの名無しさん
10/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
10/05/07 00:40:27
Grid 全体で MouseUp とってしまうから駄目だった。
忘れてくれ。

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

無理じゃね?

848:デフォルトの名無しさん
10/05/07 01:05:45
いや3ついっぺんにクリックされたように扱いたいって話じゃないの?

849:デフォルトの名無しさん
10/05/07 01:09:17
>>844
読み流してた
つまり>>847なんだなごめん

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

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

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

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

852:デフォルトの名無しさん
10/05/07 01:43:08
一番上が拾うんでいいならTunnelじゃいかんのかね

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

854:デフォルトの名無しさん
10/05/07 02:04:46
>>852
TunnelってPreview~のあれ?
重ねたImageに対してトンネルなんてできるのか?

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

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

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

857:デフォルトの名無しさん
10/05/07 23:09:28
4の良書でないかなぁ

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

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

859:デフォルトの名無しさん
10/05/08 06:52:09
update
URLリンク(code.msdn.microsoft.com)

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

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

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

TextOptions.TextFormattingMode
TextOptions.TextRenderingMode


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

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

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

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

866:デフォルトの名無しさん
10/05/10 22:01:19
IValueConverter
するまでもないな、StringFormat

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

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

869:デフォルトの名無しさん
10/05/12 17:45:00
途中で送信しちまった。>>867サンクス

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

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

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

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

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

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

876:デフォルトの名無しさん
10/05/12 20:02:06
え?DataTemplate使えば必然的に動的に生成しまくりだろ?

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


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch