1 名前:デフォルトの名無しさん [2009/01/09(金) 22:14:36 ] あたらしいGUI FW、WPFについて語るすれ。 .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 - October 2008 Release ttp://www.codeplex.com/wpf/Release/ProjectReleases.aspx?ReleaseId=15598 関連スレ Microsoft Silverlight 2.0 その3 ttp://pc11.2ch.net/test/read.cgi/tech/1227324813/ 過去スレ 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/
271 名前:>>189 mailto:sage [2009/02/19(木) 15:58:19 ] Blendが自動でコード補助とかしてくれたらわかるけど、ヒントすら出てくれないからヘコしんどい
272 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 16:16:14 ] MSDNが使いづらい 探したいものがあって検索してもなかなか見つからない 数十分かけてやっと見つかったと思ったら大雑把にしか書いてなくて迷うこともある >>271 ヒントでねーわ選択画面ねーわで結局本片手にやるはめになるよな
273 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 16:20:57 ] IntelliSenseが最強の教師って状況はおかしいよな。
274 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 21:38:21 ] Silverlightのドキュメントなんかもっと酷いよ
275 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 22:10:32 ] MSDNで直接探すのは、どこに書いてあるか見当がつく場合ぐらいだなぁ 特定のクラスについて調べたいとか、この辺に探してるやつがある筈 と思う時ぐらい 調べる対象が漠然としてる時は、ググった方が早いね。
276 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 22:43:21 ] >>275 クラス名でググった方が早くね? www.google.co.jp/search?q=System.Diagnostics
277 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 23:48:27 ] WPFをMicrosoft Blendで作るのと、Visual Studioで作るのって何が違うの? 分裂したメリット、デメリットが判らない。 自分的にはVisual Studioではコード候補が出るから何とかなる気もする、 Blendは即コンパイル。 こんな感じ?
278 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 00:06:39 ] プログラマーとデザイナーが同時に作業できるようにってことだったと思うけど タダで配るならともかくこれは完全に失敗だよな
279 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 01:18:31 ] Blendがもっと手軽にコントロールテンプレートを弄り倒せるツールだったらヤル気がでた。
280 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 01:28:46 ] >>277 多分Blendに存在価値がないのが問題 どう見たってプログラム素人が手ェ出せるUIじゃないだろ・・・
281 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 02:25:33 ] >>280 xamlを意識しなければそれなりに使えそうだけどなぁ ただ、デザイナじゃないからblendは使いこなせなかったけどw とりあえず、フォーカスするとキモい挙動をする(グラデーションが動く)ボタンなら簡単に量産できると思う。 (センスのない自分が嫌になれるよ!)
282 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 07:43:01 ] 色とかかえたりするにはまぁいいんだけどね・・・ 何つーかもうちょっと全体的に使いやすくなって欲しいんだよなぁ FLASH用のツール作ってた人なんだろ、これ作ったの。
283 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 08:52:06 ] xamlとC#の変換ツールないですか? いきなりxaml使えといわれても何やってるのかよくわからないものは気持ち悪くてさわれない
284 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 09:37:19 ] >>283 それを言うならxamlとC++の変換じゃないの? C#から使うものだけど実装自体をC#でやってるわけじゃなかろう。 俺は詳しくないからxamlをパースしたあとC#に変換しているのか C++で直接動かしているのか詳しくは知らないが、 283はC#のメモリ管理が内部で何やってるかわからんから気持ち悪いとか言って わざわざC++で書いたりするわけじゃないんだろう? ああいう記法でラッピングした以上制約が色々あるから気になるならWindowsFormでやればいいし そこまで潔癖に気にするやつが使う代物でもないと思う。
285 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 10:11:12 ] むしろaspxだろうJK
286 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 13:02:03 ] >>284 これはひどい > C#のメモリ管理が内部で何やってるかわからんから気持ち悪いとか言って CGの動作原理を理解すれば気持ち悪くなくなる 同様に、XAMLとC#の対応関係を理解すれば、XAMLに対する気持ち悪さも消えるだろう 対応関係はDependencyPropertyの解説などを見れば、だんだんわかってくるが、 てっとり早く理解する為に変換ツールが欲しくなるのも理解できる けど、変換ツールは見たことないな ライブラリはXAMLをパースして、(ILを出力せずに)直接オブジェクトを生成しちゃってるし
287 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 13:53:48 ] XAMLがC#のコードとして表示されてるのを見たことある気がするんだが、 VisualStudioにそういう機能なかったっけ?
288 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 14:08:35 ] アプリケーション定義のxamlならobjフォルダにC#コードが出力されるけど。
289 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 14:15:58 ] <x:Code> ``` </x:Code> のことを言ってたりする? これならXAMLの中にそのまま記述できるけど?
290 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 14:34:26 ] >>288 ああ、それだった。たいした情報はないのな。
291 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 16:03:42 ] >290 StartupUriのxamlをフレームワークのAPI使ってロードするだけのコードだからね。
292 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 21:04:52 ] >>283 はXAMLがどうC#と関連づけられるか分からないから気持ち悪いと言っているんであって、 >>284 が言うようなC#のメモリ管理なんて言ってないだろうが。 XAMLで書けることはC#で書けるんだから、C#がわかるなら気持ち悪いなんて事は無いだろうに。
293 名前:284 mailto:sage [2009/02/20(金) 22:05:03 ] すまん、俺がボケかましてただけだった。 milcore直接たたいてるのはWPFでXAMLじゃなかったわな。 直接たたいてるとしたらアンマネージドだからああいう物言いになったと。 メモリ管理どーのってのはあくまでも例え。286は例えとわかってくれているが292には通じんかったようだ。 GCは挙動わかっててさえ気持ち悪いとか非効率とかよく言われるものなのに、 まずGC積んでるC#自体を気持ち悪がらないのにXAML程度を気持ち悪がる理由がわからんって事。 例え悪くてすまんな、低脳なんで。 ただ、XAMLで書けることはC#で書けるというのは大抵書いてあることだけど そのままパースして翻訳されてると俺は思ってないし、 そう考えると実際に内部で何やられてるかわからんと言う意味で 283が気持ち悪がってるのかなとは思い直した。
294 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 22:12:51 ] milcoreは最終的な一番低いレベルの描画に使ってるだけ XAMLをパースしてるのはフレームワークのマネージコード
295 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 22:20:51 ] WPFは最終的な描画以外は全部C#で書かれてるよ SilverlightはアンマネージC++にごくごく薄いマネージドの皮をかぶせただけ
296 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 22:28:05 ] >>294 ,295 把握した。
297 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 00:04:48 ] マイクロソフトの人がこのスレみて反省してくれればいいのだが
298 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 01:52:02 ] マネージからmilcoreたたければなー
299 名前:デフォルトの名無しさん [2009/02/21(土) 09:39:09 ] 299
300 名前:デフォルトの名無しさん [2009/02/21(土) 09:39:45 ] 300
301 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 22:20:19 ] Dispatcher.InvokeするとTargetInvocationExceptionが起きるんですが、どうすれば回避できるのでしょう?
302 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 22:25:45 ] 中身(InnerException)は?
303 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 22:27:50 ] ごめんなさい、知識なさ過ぎて答えられません InnerExceptionとは何でしょう?
304 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 22:48:19 ] ああ、TargetInvocationExceptionっていうのは呼び出した先でエラーが起きてるってことなのですか? 検索してもさっぱりわかりませんでした それでは調べてみようと呼びだしてるメソッドの中身をtry catchで囲んでみたらなぜかエラーが起きなくなりました なにがおきてるんでしょう?
305 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 22:56:08 ] try{ ほにゃらら }catch(Exception e){ MessageBox.Show(e.InnerException.ToString()); } してみたら?ていうか、キャッチしなかった場合にデバッグ環境で表示されるダイアログでも InnerExceptionは見れるけど。
306 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 22:58:33 ] ごめんなさい、エラーおきてました 時間なくてあせってて 原因もわかりました お騒がせしました お付き合いありがとうございました では
307 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 23:14:02 ] e.ToString() したら InnerException も連鎖的に出してくれたような
308 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 23:23:18 ] TargetInvocationExceptionが起きると出してくれないんですよ だから何が起きてるのかさっぱりわからなくてパニくりました はずかしい
309 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 01:12:03 ] 違うスレッドで起きてる例外だからスタックトレースとしては連続してないってだけだろ。 ちゃんと例外の発生したスレッドというかメインスレッド側で処理しておけ。
310 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 11:55:11 ] Blendがうんこ過ぎてメモ帳以下ですが、私の使い方が間違っているものだと思うので質問します。 BlendでBindingするときに、勝手に全ての対象へ「x:Name」を定義してしまうのですが、 デフォで親参照とかにする設定などありますか?
311 名前:デフォルトの名無しさん [2009/02/23(月) 12:51:58 ] xamlっていったんC#のコードに変換してからコンパイルされるんですか? コードビハインドのコンストラクタにあるInitializeComponent()の定義を参照 すると、window1.g.csみたいなファイルが生成されて、xamlを置き換えた windows forms時代のようなコードが見られるんですが。 そうやってるなら、いっそのことxamlなしでc#オンリーの選択肢もほしい。 RADツール使うなら、xamlだろうとc#だろうと、かわらんし。 >>283 激しく同意だ。xamlはとにかく裏で何やってるのかさっぱりわからんのが 気持ち悪い。 さっきのInitializeComponent()メソッドなんて定義がどこにもないのに、 使えることになっている。自動生成されたcsファイルいじったらどう反映される んかねえ。 だいたい、プログラムのエントリポイントはいったいどこにある んだ??? いくらなんでも隠蔽しすぎなんじゃないのかね、wpfは。
312 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 13:03:25 ] 根本的に間違ってる XAMLはC#のコードに変換しているわけではない WPF自身が実行時に直接XAMLをパースして組み立ててる window1.g.csはXAMLを読み込む処理を呼び出して 読み込まれた要素を対応するC#のフィールドに代入するためだけに生成される
313 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 13:11:51 ] C#だけでも作れるよね? xaml使ったのとC#だけのもの、初期化処理は違うとしてもほぼ等価な動作すると考えていいの?
314 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 13:25:07 ] それはもちろんそうだけど RADで生成するからxamlだろうとC#だろうとかわらんというなら わざわざC#を吐かせるメリットがない 言語別に対応しないといけないし動的に読み込むこともできないし 人間が読んだり修正したりするのも難しいし RADが人間による修正に対応するのも難しい
315 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 19:33:27 ] >>311 XAMLからコントロールの論理ツリーが生成される。〜.g.cs のC#コードはそれを参照するため。 それと、ASP.NETと違ってコントロールへはIDによるアクセスじゃなくなった。 > xamlはとにかく裏で何やってるのかさっぱりわからんのが気持ち悪い。 裏とか表ってw これはW*Fの基本理念の一つで、「1つのプログラム言語やコードで何でもでき、そして何でもやる。」 という旧態のプログラマ的な思想から脱却して、高度にモデル化され、そして機能と役目の分担が 進んだ結果、こう変化したんだよ。 >>313 できるよ。 過去の資産であるWindowsFormライクなプログラミングスタイルも継承しているからね。 過去の資産=過去の頭脳w ・・・過去の技術者を一気に冷たく捨てないところがマイクロソフト。
316 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 19:38:21 ] すごく… 胡散臭いです
317 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 20:08:53 ] UI専用の言語とその構造に基づいたデザイナという組み合わせは、C#のコードをドキュメント化 されていない流儀で自動生成するブラックボックスなデザイナよりも圧倒的に優れていると思う。 Windows Formsは昔のVisual Basicのノリから抜け出せていなかった。 それに、コンテナの配置はxamlでやって、コントロールの動的生成をコードでやって、とか、 役割分担のさじ加減をプログラマがコントロールし易い(Windows Formsでもできるけど)WPF の魅力だと思う。 xamlはxmlベースの構造的な言語だから、不明瞭なのは直接の子要素がChildrenプロパティなのか Contentsプロパティなのか、くらいだけで、同等のコードをC#で書くのってとんでもなく楽。
318 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 20:28:48 ] いやおまえら、partial classくらい知ってろよ。 2.0からずっと、UIとイベントの定義は一緒だろうが。 WindowsFormsとXAML、どっちも同じ。ASP.NETも。 XAMLはC#で全く同じものが書ける。これは最終的に一つのクラスになるから。 複数のソースで一つのクラスが定義できるのがpartial class。XAMLのように 言語が異なるのは既にASP.NETでやっている。
319 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 20:38:49 ] ここまでの議論の参加者で*.xaml.csでpartial クラスの機能が使われている事を知らない奴が いるとは思えないんだが・・・
320 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 20:53:59 ] 時代はpartial !! じゃなくてw C#使ってるならそのメカニズムくらい分かってる筈だよ。 つーか、Formデザイナからだけでなく、XML構文によるUI要素の 名前空間、クラス、プロパティ、イベントの表現が、公式フォーマットの XAMLドキュメントという定義で可能になったことが新しい。
321 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 21:02:35 ] そうそう。UI定義の方法は、Windows Forms時代には、デザイナが勝手な流儀で勝手にやっていただけ。でもxamlはXMLベースで標準の構造的な仕様が定まっていて、その構造の上にデザイナが 乗っかっている。だから、ブラックボックスで気持ち悪い、とはならない。
322 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 21:29:15 ] 以前に書き込んだC#+WPF+ARToolkitPlus+DShow.NETでミクさん大放出を、 Windows Media Playerの視覚エフェクトにしてみた。WMPのSDK的に視覚エフェクト プラグインはC++で作ってオンフレームでデバイスコンテキストに描画するように なっているので難儀したけど、C#板でCOM InterOpについて助言してもらってどう にかC#+WPFだけで全部やれた。 動画:www.nicovideo.jp/watch/sm6242828 ソース:sites.google.com/site/augmentedrealitytestingsite/download のWMPEmitMiku.zip なんかもうコンセプトがカオスになってきて、WPF板的にスレ違いっぽくなってきたので これで終わりにするわ。後の進展(あるか分からないけれど)に興味がある人がいたらニコ動の マイリストでも時々見てくれ。
323 名前:デフォルトの名無しさん [2009/02/23(月) 21:36:00 ] > window1.g.csはXAMLを読み込む処理を呼び出して > 読み込まれた要素を対応するC#のフィールドに代入するためだけに生成される いっている意味がよくわからないんだけれど、 window1.g.csはイベントのシンクとかも処理しているように見えるんだが。 フィールドの代入だけなんて代物じゃないんじゃないの? xaml全体がシンタックスシュガーかと思っていたよ。 そんなとこまで隠蔽して、
324 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 21:40:22 ] 323が隠蔽された!
325 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 21:49:21 ] window1.g.csがやってること ・リソースのXAMLを読み込む(Application.LoadComponentに丸投げ) ・ロード後,CLRフィールドに要素を代入 ・イベントハンドラのアタッチ
326 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 21:59:07 ] C#だってILに変換される。それを隠蔽とは言わない。 期待される動作が一通りで、その通りの動作をするのならば、より低いレベルが隠蔽されていても 問題にはならない。必要に応じて高レベル、低レベルを使い分ければ良い。 ブラックボックスが気に食わないのは、ただ一通りの動作を期待できないからで、それは知識不足 のせいだと思うんだけど。
327 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 22:13:06 ] XAMLをAPIでパースして、親子関係にのっとり それぞれのUI用クラスを生成してるだけだろ? どこが隠蔽されてて気持ち悪いのかぜんぜんわからねーよ。
328 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 22:22:48 ] バインディングとかがイベントで実装されている事を知らずに、謎のコードが自動生成されている とか勘違いしているのかなあ。 俺が気持ち悪く感じるのは、XAML記述上の直接の子要素がどのプロパティ(ChildrenとかContentとか) に対応するのかXAMLを見ただけでは分からない事だけだ。まあ確かにこれだけは気持ち悪い。
329 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 23:14:26 ] 以前アップしたXAMLを使わないWPFの例 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8924.txt 一番下のXAMLのWindowsタグをPageに変えて、utf-8でhoge.xamlで保存。 IEで開けばloose xamlでも動く。
330 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 23:42:06 ] >>322 ARToolKitはC++でライブラリをラップして、 DLL作ってから参照してるのかいな?
331 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 23:57:40 ] >>330 その部分はbrains-N-Brawnさんの仕事。 ``ARToolKitPlus - modified to be a DLL and export C-style functions that can be pInvoked from C#'' www.mperfect.net/wpfAugReal/ その部分だけpure .netじゃない。そのDLLをPInvokeするラッパはbrains-N-Brawnさんのを拝借 していてそれはpure C#(PInvokeがpureかは別として)。それからDShow.Netも(COM InterOpが pureかは別として)pure C#。そんでもって3D出力は、NyARToolkitなんかがDirectX SDKに含まれる Managed Direct Xを必要とするのに対しこちらはWPFの3Dを使用しているのでまあ敢えて言えば pure(標準の) C#。 というわけで、上記DLLを除いて、オリジナル・非オリジナルのコードいずれも完全に標準のC#と .NET 3.5(WPF)で書かかれている。まあ、NyARToolkitなんかはARToolkitのコードをマネージコード に真面目に移植しているので、どっちがpureかというのは微妙だけど。でも、3D出力がWPFである点 によって、とっつき易いアプローチになっている面は確実にあると思う。というか、それで無理やり 関連付けてこのWPFスレに投稿しているわけなんだが。
332 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 23:58:25 ] ごめん、改行が変になって読みにくくなった。
333 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:00:05 ] Windows フォトギャラリーで露出とかコントラスト調整すると スライダーの移動に合わせてほぼリアルタイムに描画されるんですが、 この機能を自作 WPF プログラムに実装したい場合どうすればよいでしょうか?
334 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:07:08 ] WriteableBitmapでも使って更新しまくれとしか答えようがない 画像処理自体はスレ違い
335 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:10:59 ] 詳しくないんだが、一応バインディングとかINotifyPropertyChangedインタフェースとかの話題じゃないか?
336 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:17:39 ] ビットマップの方更新するだけでよかったはず
337 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:19:37 ] どのタイミングで更新、っていいたいんじゃ?
338 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:22:30 ] ダイナミックリソースとかバインディングじゃないの?
339 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:22:59 ] >>331 を、便利な物を作ってる人がいたんだ!。 ARには興味あったのでいじくってみる。 ソース読ませていただきます。
340 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:24:30 ] よし、リフレクタの出番だ。 www.red-gate.com/products/reflector/
341 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:27:05 ] ほんとにビットマップ更新するならバインディングじゃどうしようもない SliderのValueChangedイベント使うくらい
342 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:38:30 ] 結局C#なのね
343 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:43:21 ] >>333 の言いたいことってこういうこと? blogs.wankuma.com/kazuki/archive/2009/01/12/166166.aspx
344 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 09:29:03 ] >>323 はタブーに触れて消されちゃったんだなあ。
345 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 20:55:23 ] 入力可能なDataGrid風ListView↓使ってる人っている? ttp://pro.art55.jp/?eid=908012 ttp://d.hatena.ne.jp/Yamaki/20070706/1183688885 テキストの編集中、右クリックでTextBoxデフォルトのContextMenuを開くと TextBoxがキーボードフォーカスを失い、編集モードを終えてしまうんだけどそういう風にはならない? ContextMenuのアイテムも選択できない。
346 名前:333 mailto:sage [2009/02/24(火) 22:01:41 ] おまえら、エスパーすぐるw >>343 そこを参考にして画像ビューワーを作ってて、 >>341 のイベントで、 >>334 の方法で自前で露出の調整をしたら、 イベントの処理に5秒もかかっちゃって、 がんばって最適化しても1秒を切ることができなくて、 ためしに、 Vista の Windows フォトビューワーいじってみたら 瞬時に変わるので、これは、GPU 使ってるとか、DirectX 使ってるとか、 なんか自分の知らない WPF テクニックがあるのかと思って質問しました。
347 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 22:10:35 ] だから、>>340 のリフレクタで解析してみなよ。 俺、Windows XP⇒Windows 7ベータだから、Windows フォトギャラリーないんだ。
348 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 22:17:07 ] WPF自体はDirectXつかってるけどな
349 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 22:46:22 ] 単に画像処理の実装が悪いだけだろ WPF自体の描画更新なんか画像処理に比べたら一瞬
350 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 22:47:51 ] unsafeってしってるか?
351 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 22:48:31 ] Bitmapの処理はメモリをロックしてアンマネージでポインタを使わないと遅いぞ〜。
352 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 22:52:26 ] ここはWPFスレですよ WiteableBitmapは十分速いよ もともと>>351 みたいな書き込みの方法しか用意されてない
353 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 23:03:59 ] writeableBitmapにコピーするデータ作るのに時間かかってるんだろうが
354 名前:333 mailto:sage [2009/02/24(火) 23:05:09 ] >>347 >>340 は俺へのレスだったのか。すまん。 reflector は知ってたけど、Windows フォトギャラリー って .net のプログラムだったんだ? 今日は出先なんで無理だが、家帰ったら試してみる。 >>349 そうなんだよ。だから、フォトギャラリーがどうやってるかわかればなぁ・・・と。 >>350 >>351 >>352 WritableBitmap で unsafe でポインタ使っても遅くて、 C++ で書き直して1秒切るところまでいったんだが、 まだ遅いので質問するにいたったわけです。
355 名前:333 mailto:sage [2009/02/24(火) 23:06:15 ] >>353 そのとおりです。
356 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 23:07:03 ] アルゴリズムが違うとか,プレビュー用に簡易に処理してるとか いずれにしてもこれ以上はスレ違い
357 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 23:13:09 ] HLSLでやってみるとか WPFでも使えるようになったことだし
358 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 23:21:00 ] >>354 もはやあれで半分反則だけどこんなのがある。反則なので速いと いっていいのかわからんが ttp://www.codeplex.com/wpffx 川西先生の紹介↓ ttp://blogs.msdn.com/hiroyuk/archive/2009/02/09/9407704.aspx ちなみにちょっとビルドに注意。Codeplex にある別のやつがいる
359 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 04:54:37 ] Windows Formsコントロールのオーナードロー拡張なんてもういやだ。 WPFの入れ子コントロールとXAMLが欲しい。 あと文字の強制アンチエイリアスはさせたくない。 こんな要望に対するソリューションて現状ある?
360 名前:347,340 mailto:sage [2009/02/25(水) 05:17:51 ] >>354 え、WPFスレで、しかもWPFでどうやるのかって質問だったから、.NETプログラムなのかと勝手に 勘違いしてしまった。そうでないのなら、普通にシェーダ使ってるんじゃないの? 純粋なWPFアプリケーションだとしたら、>>358 なんかで紹介されているWPFでのシェーダの使用 は最近の更新で可能になったものだから、Vista標準のプログラムとしてはないと思う。 結局、.NETプログラムじゃない、シェーダを使ってるか、画像処理を気合で頑張っている、つまり スレ違いって所で落ち着きそうだ。
361 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 06:14:00 ] >>359 XAMLの中で、例えばテキストボックスに <TextBox RenderOptions.EdgeMode="Aliased" x:Name"textbox1" 〜 /> と記述した場合、カーソルバーは1ドット幅の縦棒でシャキーンと表示されるけど、テキスト文字だけは 常にアンチエイリアス処理されますね。これだけ我慢すれば、最良のソリューションじゃないでしょうか。
362 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 09:29:50 ] >>359 Form上でそれ実現する奴作った。それ使ったシステム5月ぐらいにリリース予定。
363 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 09:32:20 ] 手伝おう テストするからうpして
364 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 09:52:25 ] 写真だけうp ttp://www.rupan.net/uploader/download/1235523080.jpg
365 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 11:10:48 ] >359 ElementHost使えば、winformsにコントロール単位でWPFコントロール 持ち込めるだろ。例えば、ListBoxだけとか。 んで、起動時にSystemFontsの中から適当なの選んで設定すれば、 フォントもwinforms同様になる。
366 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 13:33:55 ] 初心者な質問で恐縮です。 InkCanvasのペンの色を変える方法を教えてください。 xamlとC#と両方の方法をお願いします。
367 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 13:40:27 ] msdn.microsoft.com/ja-jp/library/system.windows.controls.inkcanvas.aspx MSDN読めないならWPFなんか手を出さない方がいい
368 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 17:45:18 ] キーバインディングでメソッドを呼ぶときは、どのように書けばいいですか? たとえばEnterで、設定ボタンを押すとき。 C#だけなら、 private void settingbutton_Click(object sender, EventArgs e){} を呼ぶには、 settingbutton_Click(this, EventArgs.Empty); と書けばいいのですが、xamlではどう書けばいいですか? <KeyBinding Key="Enter" Command="Close"/> のCommandのところに書けばいいのかと思っているのですが、ここを適当に書くと、 'CommandValueSerializer' ValueSerializer は 'System.String' から変換できません。 とエラーになります。System.Stringということは、デフォルトでいくつかきまっていると思うのですが、その一覧はどこにあるのでしょう? またその一覧のなかで、メソッドを呼ぶStringはなにでしょう? よろしくお願いします。
369 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 17:59:24 ] > settingbutton_Click(this, EventArgs.Empty); > と書けばいいのですが、 の意味が心底分からんが 適当にCommandsクラスとか作ってコマンドごとにRoutedUICommandのstatic readonlyフィールドを用意 それをKeyBinding.Commandに設定 あとはCommandBindingでコマンドが呼び出すメソッドを設定
370 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 18:12:04 ] す…、すまん。ぜんぜんだめだ。 おれが適当に書くとエラーの山だ。 適当にCommandsクラスをどこに作る? .csのほう? public partial class Commands : Window { } コマンドごとにRoutedUICommandのstatic readonlyフィールドを用意 コマンドごと…。ってことは、設定コマンドを作るのだから、 public partial class Commands : Window { Setting } それをKeyBinding.Commandに設定 xamlで <KeyBinding Key="Enter" Command="Setting"/> CommandBindingでコマンドが呼び出すメソッドを設定 private void setting(object sender, EventArgs e){//メソッド} 添削頼む…。
371 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 18:28:17 ] > 適当にCommandsクラスをどこに作る? .csのほう? > public partial class Commands : Window { System.Windows.Input.ApplicationCommandsみたいにstaticクラスでいいよ。 新しくcsファイル作ってそこにでも。 まあ別にCommandsクラスじゃなくてもいいけどな。肝心なのはRoutedUICommandのフィールドだから。 ApplicationCommandsみたいにICommandは一つにまとめるのが自然だと思っただけで。 つかまずApplicationCommands.CloseとかでKeyBindingとCommandBinding使ったの書いてみろよ。 MSDNやヘルプのこれらのクラスの解説にサンプルがいくらでもあるから。