1 :デフォルトの名無しさん:2012/04/13(金) 15:53:23.55
ユーザーインターフェースシステム、Windows Presentation Frameworkについて語るスレ。

Visual Studio 2010
http://www.microsoft.com/japan/msdn/vstudio/
Microsoft .NET Framework 4 (Web インストーラー)
http://www.microsoft.com/downloads/details.aspx?familyid=9CFB2D51-5FF4-4491-B0E5-B386F32C0992&displaylang=ja
Microsoft .NET Framework 4 (スタンドアロンインストーラー)
http://www.microsoft.com/downloads/details.aspx?familyid=0A391ABD-25C1-4FC0-919F-B21F31AB88B7&displaylang=ja

前スレ
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part12
http://toro.2ch.net/test/read.cgi/tech/1324366825/

関連スレ
Microsoft Silverlight その9
http://toro.2ch.net/test/read.cgi/tech/1321150267/

コードを貼る場合は以下の(ピヨピヨ)の利用をお勧め。
run codeのチェックは外しておきましょう。
http://ideone.com/

130 :デフォルトの名無しさん:2012/05/03(木) 10:47:32.53
エディターコントロールを自作しようと思うんだがScrollViewer要素の内側に直接描く方法がわからない
AvalonEditだとScrollViewerの子要素にControlクラスを継承したクラスを置くような格好になってるんだが、それだとどうも気持ち悪い
http://www.codeproject.com/Articles/42490/Using-AvalonEdit-WPF-Text-Editor
かといって、OnRenderで描くとスクロールバーも破壊されてしまうので好ましくない
AvalonEditが行っている方法以外でスクロールバーなどの要素を破壊せずに直接描く方法があったら教えてほしい

219 :デフォルトの名無しさん:2012/05/05(土) 20:08:18.86
FrameworkElementを継承させたFooTextBoxBaseにOnPreviewKeyDown()メソッドを追加したんだが、肝心のイベントが発生しない
どうすればいいの?

XAMLはこういう感じになってる
http://codepad.org/tJsfxN8B
FooTextBox.cs
http://codepad.org/YXP49As8
FooTextBoxBase.cs
http://codepad.org/7uVr43PH


223 :デフォルトの名無しさん:2012/05/05(土) 20:57:12.08
こういうやり方で解決した
http://codepad.org/Bi5T1p5x

これでとりあえず動くようになったんだが、文字の入力が重たくて仕方ない
前の書き込みを見てるとOnRenderで描写すると重たいと書いてあったんだが、軽くするにはどうすればいいの?
(ただ、キャレットの移動自体は思いのほか軽かった)

235 :219:2012/05/06(日) 01:36:15.44
>>223
どういう風に使えばいいの?

あと、もう一つ質問なんだが、結構な数のプロパティがあるんでFooTextBoxBaseにあるやつと同じ奴をFooTextBox追加するのは結構面倒くさい
でも、FooTextBoxに依存関係プロパティがないとかなり使いにくくなってしまう
何かいい手はないんだろうか


236 :デフォルトの名無しさん:2012/05/06(日) 01:40:47.55
>>235
ビヘイビア

237 :デフォルトの名無しさん:2012/05/06(日) 01:51:39.80
> FooTextBox追加するのは結構面倒くさい
標準的な方法ではどうにもならないね。

他にも、WPFは色々と定型的で面倒な部分が多いので
ソースコードの自動生成で効率化することをお勧めする。

238 :219:2012/05/06(日) 02:08:26.39
>>236
それ使っても早くならなかった
なぜ遅いのかわからないのでプロファイラーを使ってみたら、別なところに原因があった

>>237
どうにもならないのか

313 :デフォルトの名無しさん:2012/05/10(木) 00:32:56.89
FooTextBoxをWPFに移植してみたんだが、CPUの負荷がWinForm+Direct2Dを使った奴より高くて悩んでる(WPFだと20%を推移してるんだが、Direct2Dだと10%前後で済んでる)
OnRenderではなく、DrawingVisualに描く方法なら低くなると思ったんだが、CPU負荷の点では差がなかった
CPU負荷を落とすにはどうすればいいの?


314 :デフォルトの名無しさん:2012/05/10(木) 01:58:51.69
>>313
まず、WPFにDirect2Dって概念はない
それにお前は質問するだけで質問には答えてやらないのはなぜだ?
お前でも答えられる質問はいくらでもあっただろ
質問しかしにこないのか?
そんなやつに答えてやる義務はない

315 :デフォルトの名無しさん:2012/05/10(木) 03:30:20.92
>>313
それだけの情報だと何とも言えない。
WPF Performance Suite を使ってアプリケーションイベントの CPU 使用率を調べてみたら?

319 :デフォルトの名無しさん:2012/05/10(木) 13:52:35.63
>>314
すまん
あんまり詳しくないんで答えるのもあれだと思ってた

>>315
それ使って調べてみた
レタリング:15%
レイアウト:3%
その他もろもろ:合計で2%
レタリングの負荷を落とすことってできないのかな


324 :デフォルトの名無しさん:2012/05/11(金) 12:58:07.35
AvalonEditはWPFの流儀に沿った書き方をしてるので
WPFのレンダリング最適化機構がちゃんと動作してる。

>>319はGDIのプログラムのような書き方をしてるので
WPFの最適化機構が全然働いていない。

つーわけで、速くしたかったら
WPFの解説書をよく読んで、AvalonEditを参考にしつつ1から書き直せ。

325 :319:2012/05/14(月) 16:02:15.92
OnTextInputをオーバーライドしただけだと、IMEのウィンドウが外に出てしまう
このままじゃあ、使い物にならないから、オンスポット入力に対応させたいんだが、どういう風にすればいいのかさっぱりわからない
くぐっても出てこないし、avaloneditorもそこらへんは特に何もしてなかった
MSDNならあるだろうと思い調べてみたが、IMEに関するサンプルは何もなかった
どうすればIME対応にできるんだろうか

>>324
なるほど流儀に従っているから早いのか
もう一度参考にしつつ書いてみる


346 :デフォルトの名無しさん:2012/05/16(水) 09:54:57.23
http://www.atmarkit.co.jp/fdotnet/chushin/introwpf_05/introwpf_05_03.html
にあるような式木を視覚化するので遊んでたんだけど、たかだか10階層超えたあたりで重くなるのね。
レイアウトロジックがタコくてO^Nになってる感じなんだけど、このへんはちょこっとフックして自前ロジックにすることって出来るの?
それともDataTemplateとかも使えず全部ゴリゴリ書かなきゃいけなくなる?

347 :デフォルトの名無しさん:2012/05/16(水) 11:01:35.71
DataTemplate内で使われてるパネルを独自のものに置き換えりゃいいんじゃねーの?

フックがどういうことを想定しているのか不明だが、
少なくともDataTemplateが使えなくなる事は無い。

348 :デフォルトの名無しさん:2012/05/16(水) 11:41:30.58
>>346
ダウンロードして10階層ぐらいにしてみたけど重くないぞ?
変なことしてんじゃないの?

349 :デフォルトの名無しさん:2012/05/16(水) 11:55:57.24
>>347
んーレイアウトのロジックだけ別のをインジェクトするとか的な意味なんだが、パネルを変えればいいのかな。Canvasとかに。
その場合はコンテンツを変更した時に一番下のから順にサイズ測ってセットとかすればいいのかな・・・

>>348
そのExpressionTreeTemplates.xamlのりソース定義をGrid.Reaourcesにコピーして試してるんだが、だからかしら・・・
(x,y)=>x+(y*21)+x+(y*21)+x+(y*21)*(x+(y*21)+x)+(y*21)+(y*21)+(y*21)+(y*21)+(y*21)+(y*21)
を表示させるとGridのレイアウト時とかに5秒以上かかる。

350 :デフォルトの名無しさん:2012/05/16(水) 12:32:33.02
>>349
> レイアウト時とかに5秒以上かかる。
こっちでは0.01秒しかかからないぞ。

レイアウト中にGCが発生すると0.08秒になったが、5秒はおかしすぎる。

373 :デフォルトの名無しさん:2012/05/18(金) 17:03:46.34
テキストエディタにDirect2Dてw
文字入力やスクロールでカクカクしてなきゃいいんだよ。
以前、行番号表示したくてテキストエディタコントロール作ったが最適化して実用程度にはなったぞ。


382 :デフォルトの名無しさん:2012/05/19(土) 03:19:45.32
http://mumurik2.wordpress.com/2007/09/24/managed-tsf-managed-implementation-of-itextstoreacp/#comment-209

もうすでにオンスポット入力をWPFで実現している人がいるので、表示属性の取得をやってみた
でも、0x80040201がthis._context.GetSelection()の段階で出てどうもうまく行かない
どうすれば取得できるんだろう
このままじゃあ使い物にならないよ

http://codepad.org/B4x6kW0M
TextStore.cs


387 :デフォルトの名無しさん:2012/05/19(土) 14:11:32.72
実行不能なコードの断片なんか出されても回答のしようがない

問題を再現可能な、最小の実行可能なコードを出せ

391 :デフォルトの名無しさん:2012/05/19(土) 16:04:01.18
http://msdn.microsoft.com/en-us/library/windows/desktop/ms538791(v=vs.85).aspx

にはpredefined property identifiersを指定しろとあるのに、
何故かIIDを指定してるからさ。

そのIIDがpredefined property identifiersとしても使えるってのなら話は別だけど。

392 :デフォルトの名無しさん:2012/05/19(土) 17:27:43.29
>>391
IIDの実体はGUIDだから使えるよ


393 :デフォルトの名無しさん:2012/05/19(土) 18:07:58.90
>>392
俺が昔作ったやつの断片コード。参考になれば。
http://codepad.org/GPMsTdtb


394 :デフォルトの名無しさん:2012/05/19(土) 18:29:02.81
>>393
ありがとう
参考になった
もし、差支えなければ、コード全部アップしてくれ
車輪の輪の再発明はもうこりごりだ(笑)

そういや、コード読んで気になったんだが、VARIANTはどこの名前空間で定義されてるの?
VARIANTって.NET Frameworkにはない型のはずなんだが
あと、_servicesはどういう感じでインスタンスを作ってるの?

395 :デフォルトの名無しさん:2012/05/19(土) 20:45:42.40
>>394
簡単なサンプルつけといた。
https://docs.google.com/open?id=0By6Cgv6nBdtsN1JsbzlOaXBXcWc

VARIANT は探せばいくらでもサンプルでてくるだろ、と言いつつ自分は
Reflectorでランタイムから抜き出したw


396 :デフォルトの名無しさん:2012/05/19(土) 21:02:31.31
PROPVARIANTはともかく、VARIANTはObjectじゃないのか

412 :デフォルトの名無しさん:2012/05/21(月) 13:09:32.38
XAML←これは読み方はザメルでいいの?

418 :デフォルトの名無しさん:2012/05/21(月) 21:07:45.51
http://kie.nu/b3a
速度面で問題はあるが、日本語入力ができるFooTextBoxのWPF版ができた
いろいろと教えてくれてありがとう
すごく助かった


424 :デフォルトの名無しさん:2012/05/23(水) 10:17:53.87
市販のデータグリッドってインフラジスティックスとグレープシティのどっちがおすすめ?

455 :デフォルトの名無しさん:2012/05/30(水) 16:01:10.96
とりあえず2chブラウザーを作り始めてみました。
http://neetchan.blog.so-net.ne.jp/_images/blog/_a2f/neetchan/ss1.png
http://neetchan.on.arena.ne.jp/


492 :デフォルトの名無しさん:2012/06/03(日) 18:48:40.12
WPFでテキストエディタ作った
http://kie.nu/ckp
バイナリー
http://kie.nu/ckt
ソース


493 :455:2012/06/03(日) 19:43:47.11
>492
「矩形選択をおこなう」で複数行方向にマウス・ドラッグするとアサートが出るみたい

495 :デフォルトの名無しさん:2012/06/03(日) 20:27:19.23
>>492
ずいぶん頑張ったな。
ファイルを保存するとエラーになるとか不安定だけど形にはなってるじゃん。

496 :492:2012/06/03(日) 20:44:30.58
>>493
こっちでも出てきたんでさっそく修正しておいた

>>495
どういうエラーが出るの?


497 :デフォルトの名無しさん:2012/06/03(日) 20:47:53.21
>>496
不正な処理で強制終了

508 :デフォルトの名無しさん:2012/06/05(火) 18:05:59.84
.net frameworkから離れて5年くらい経つ。
当時は2ちゃんブラウザ作ってて最初はC#でやってたけど、
パフォーマンスとか納得いかずに結局ATL+WTLにやることに。
今、twitterクライアント作るとしてWPFでプログラミングして、
十分なパフォーマンス出るのかな。
結局はATL+WTLってことになるんだろうか。

554 :デフォルトの名無しさん:2012/06/12(火) 22:42:56.69
自作のカスタムコントロールで、CaptureMouse() したいんだけど、
GotMouseCapture イベント発生直後に、なぜかLostMouseCaptureが
発生してしまってキャプチャーできない(正確には一瞬だけキャプチャして
なぜ勝手にロストしている)状態なんだけど、なぜ LostMouseCapture が
発生するか調べる方法ってある?

617 :デフォルトの名無しさん:2012/07/04(水) 13:08:24.55
いやタッチデバイスでもわかりにくいだろ
iOSやAndroidアプリで縦横スクロール混在ってほとんど見たことない

618 :デフォルトの名無しさん:2012/07/04(水) 13:12:16.31
標準のブラウザからして縦横スクロールですが

620 :デフォルトの名無しさん:2012/07/04(水) 13:31:36.14
>>618
だから使いにくいだろ?
スマホ向けサイト作るなら縦スクロールだけでいけるようにするのが常識

631 :デフォルトの名無しさん:2012/07/05(木) 20:39:27.44
>>620
俺はスマホ向けのほうがいやだったりする
いちいちPC向けに飛び直してるよ
少数派か・・・

639 :デフォルトの名無しさん:2012/07/10(火) 07:12:20.48
>>631
タッチパネルなら、縦横スクロールもそんなに苦じゃない。
マウスだとコロコロで1方向にしか行けないから使い辛い。

しかしMetroって今ストアにあるアプリの大半が横スクロールで作ってるけどなんで?
別に縦スクロールでも良いはずなのに。大抵のwinアプリは横スクロールなんて使ってないのに。

641 :デフォルトの名無しさん:2012/07/10(火) 23:21:35.39
>>639
ディスプレイが横長だから、かな?

643 :デフォルトの名無しさん:2012/07/11(水) 10:31:10.74
一ヶ月以上も前の話題で、どうもすみませんが、
可能でしたら、テキストエディタを作る話題のコードを、
再び、アップロードして頂けないでしょうか?
>>395
>>418
>>492

AvalonEditとか、とっかかりにするには巨大すぎて把握できません……


644 :デフォルトの名無しさん:2012/07/11(水) 10:39:59.32
>>641
人間の目は、縦より横に動く物の方が捉え易いからじゃねーかな
パチスロばっかりやってる様な奴は知らんがw

645 :デフォルトの名無しさん:2012/07/11(水) 10:49:01.42
>>639
WP7のパノラマUIを発展させた感じじゃない?
自分的には左右からのフリックでの操作とあわせて操作はしやすいと思う。


657 :デフォルトの名無しさん:2012/07/11(水) 20:10:11.96
メトロは池沼の発想による産物だから。
横スクロール推奨で、MSのガイドラインに
「スクロールできることが視覚的に分かるように次のページの一部が入り込むようにしましょう」
とか書いてあるのを見て目眩がしたわ。

701 :デフォルトの名無しさん:2012/07/28(土) 17:01:39.14
GDI+である範囲をクリッピングして線を引いたり四角を描いたりするのと同じようなことをしようと思うんですが、Canvas上でShape使ってやるとしてClipの仕方どうすべきですかね。
各Shape各々のClipにのShape位置にずらしてGeometryを設定する?
それともクリップの形状ごとにCanvasを全面覆う子Canvasを作ってそれにShape追加してクリップすべきですかね。
何か良い作法があれば教えてたもれ

711 :デフォルトの名無しさん:2012/08/01(水) 00:31:30.79
一度変更通知受け取ったら解除しちゃえばいいじゃないか

726 :デフォルトの名無しさん:2012/08/22(水) 08:16:33.29
ローカルアプリもHTML,CSSやJSだけでUIつくれたららくなのにな,,(ブラウザ無しでさ)

727 :デフォルトの名無しさん:2012/08/22(水) 08:26:54.56
>>726
今そういうの探してる最中なんだけど、そしてたどり着いたのがXAMLなんだけど、それに近いのってないの?


728 :デフォルトの名無しさん:2012/08/22(水) 08:28:47.59
Metroなら作れるよ
WPFなんか無くなってビューがHTML/CSS/JSで作れたら嬉しいのは同意
ビュー以外はC#で書きたいが

737 :デフォルトの名無しさん:2012/08/22(水) 10:19:34.20
>>727
世の中にはQTって奴も存在するんだけどな

748 :デフォルトの名無しさん:2012/08/22(水) 20:11:20.39
既存のブラウザコンポーネントを使うのが嫌だからって
自分でHTML/CSSの処理系作って組み込んだとして
それブラウザとどう違うのかと
環境依存が嫌ならWebkitのラッパーでも使っとけばいいだろ

753 :デフォルトの名無しさん:2012/08/22(水) 22:48:48.47
ブラウザコントロール使うならJavaScriptからC#のオブジェクトを操作したりメソッド呼んだり
その逆も普通にできるよ
ブラウザ使わないにしてもV8とかC#アプリに組み込んでC#からJavaScriptのコードを実行させることは可能
その場合、JavaScript側に.NETのリフレクションAPIをラップして提供しておけば
JavaScriptから.NET側のあらゆる機能に自由にアクセスできる

754 :デフォルトの名無しさん:2012/08/22(水) 22:53:20.43
>>753
そんなめんどくさいことしなくてもDLRでいけるだろ
DLRはJavaScriptもサポートしていたはず


759 :デフォルトの名無しさん:2012/08/23(木) 08:02:22.07
dynamicの中身はなかなか素敵だけど、
それでもDLRの一部しか入らなかったの残念ではある。

DLRでなくてもいいけども、動的言語間でのオブジェクト共有プロトコルはほんとほしいんだけどなぁ。
言語ごとに別ライブラリ覚えるとかナンセンス。

774 :デフォルトの名無しさん:2012/08/30(木) 05:59:39.27
スレ違いの気もするけど、Windows8のタッチパネル自体微妙だなって思う

単に見たりするだけの用途ならタッチパネルでもいいけど、
入力とか編集とかする場合はアプリなら10年後でも20年後でも
キーボードの方が入力効率はいいと思うし、
ゲームとかにしてもキーボードとマウスをフルに使ってプレイするような
複雑なものだと、タッチパネルだけで遊べるようになるとも思えない
他プレイヤーとのチャットとかもキーボード必須だろうし

結局、タッチパネルはタッチパネルで
外出先でノートで、何かを見るだけとか
一部の用途には有用だろうけど
デスクトップアプリやゲームは現状のまま残ると思う



http://toro.2ch.net/test/read.cgi/tech/1334300003/l50/../人気ブログランキングへ