トップページtech
1001コメント279KB

【新GUI FW】WPF(XAML,AVALON,.NET3.0)【重い?】

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん2006/11/08(水) 10:43:18
あたらしいGUI FW、WPFについて語るすれ。

.NET3.0もリリースされて盛り上がってまいりますた。

WPF on MSDN
http://msdn2.microsoft.com/en-us/netframework/aa663326.aspx

.NET3.0
http://www.netfx3.com/blogs/news_and_announcements/archive/2006/11/06/.NET-Framework-3.0-has-been-released_2100_.aspx

WPF Mashup on YOUTUBE
http://www.youtube.com/watch?v=BUBOQFvh6yI

0830デフォルトの名無しさん2008/03/18(火) 00:06:30
>>828
うぅむそうなのか?
大昔にセミナーで見た時にゃー画期的だと思ったもんだが

>>829
つScreenクラス
0831デフォルトの名無しさん2008/03/19(水) 18:52:23
ScreenはWinFormsのクラスですよね
WinFormsを使わずにやる方法は無いものかと
0832デフォルトの名無しさん2008/03/19(水) 23:22:20
デスクトップの解像度はWPF関係ないしP/InvokeでAPI呼び出せば?
0833デフォルトの名無しさん2008/03/20(木) 03:06:47
てかそれ以前にScreen.PrimaryScreenはスタティックなんだが
別にForm派生内でしか使えない訳じゃないよ
0834デフォルトの名無しさん2008/03/20(木) 18:09:09
>>833
ほとんど使わないSystem.Windows.Forms.dllを参照するのが嫌だって事じゃね?
0835デフォルトの名無しさん2008/03/21(金) 00:15:58
そんな気にするような事じゃないとは思うがまあいいや
つーかよくよく考えたら、ディスプレイ解像度切り替えるのは自分なんだから解らん方が変じゃね?
もしWindowStyle&WindowStateでのフルスクリーンの話なら
つActualWidth&ActualHeight

但し、俺んとこで実験してみたら何故か多めの数字が出た
検証めどいから誰か頼んだ
0836デフォルトの名無しさん2008/03/25(火) 20:48:00
自動生成されるhoge.g.i.csのgとiって何の略なの?
0837デフォルトの名無しさん2008/04/03(木) 12:54:38
>>836
generated / internal と予想
0838デフォルトの名無しさん2008/04/07(月) 14:32:43
結局WPFでまともなアプリ開発してるやつおるん?
XCEEDのなんたらGridみてもどうみても、もさもさなんだが。
テキストのリストビューが、DataTemplateを加えるだけで素敵なレイアウトのリストになってあら不思議なのはいいんだが、実際の使い勝手とそれを開発する工数の本質とあまり関係なくはないけどないような・・・
0839デフォルトの名無しさん2008/04/07(月) 16:14:26
基本コントロールもサンプルも少ないから使う気にならん
0840デフォルトの名無しさん2008/04/07(月) 17:55:52
これってゲームとかに向いてるの?
RPGとかノベルとかまったり目の
0841デフォルトの名無しさん2008/04/07(月) 17:55:57
そもそもデスクトップアプリを開発する需要が激減してるんだから、
WPFだろうが何だろうが新たに覚えようという人も殆どおらんだろう。
みーんなWebに行っちまった。
0842デフォルトの名無しさん2008/04/07(月) 19:28:20
そのためのXBAPです
まあ煩雑杉オワタなのは変わらんけど
0843デフォルトの名無しさん2008/04/07(月) 19:50:02
結局Webアプリでどうしても出来ないローレベルアクセスが必要なものを
「仕方なく」ローカルマシンで動かすだけで、あとは全部Webに乗せる時代だからな。

「仕方なく」ローカルPCにインストールするWebアプリはAIRで。
WebアプリをリッチにするほうはFlash、3歩遅れてSilverlightで。
もうフルセットWPF&XBAPなんか出る幕は無いだろうね。
0844デフォルトの名無しさん2008/04/07(月) 20:26:12
Webとか餓鬼のおもちゃだろ
0845デフォルトの名無しさん2008/04/07(月) 20:36:31
今普段使ってるアプリ、
ブラウザー、開発環境、ファイラーなどなど、わざわざWebアプリとして動く意味がわからん。
データがあっち側にあるのはいいかも知れんけど。
0846デフォルトの名無しさん2008/04/07(月) 20:50:49
ExpressionのExpress Edition作って無料配布すれば統一的に各アプリをユーザー側でスキン作成できていいと思うんだけども。
WinampとかJaneとか。XAMLPadとかじゃめんどくさいだけだし。
0847デフォルトの名無しさん2008/04/07(月) 20:58:44
ButtonのContentにDateTimeを入れるような場合、Buttonに表示されるDateTimeの書式指定を変えたいような場合はどうしたらいいんざんしょ・・・
0848デフォルトの名無しさん2008/04/07(月) 21:46:00
IValueConverterかな
0849デフォルトの名無しさん2008/04/07(月) 23:51:50
FormのClientRectangleみたいに
ウィンドウの中身をピッタリ例えば640*480にするにはどうすればいいの?
0850デフォルトの名無しさん2008/04/08(火) 05:09:28
AIR対抗のSilverlight for Desktopが出る可能性があるから、
そっち待ったほうがいいかなーって思っちゃうんだよな。
SLのほうが軽いし他のOSでも動くし……。
AIRはコード書きにくいから期待してる。
0851デフォルトの名無しさん2008/04/08(火) 07:47:56
SilverLightで住むやつはそっちのほうがいいかもね。
2.0だとWPFとどれだけ違うんざんしょ。
0852デフォルトの名無しさん2008/04/08(火) 08:42:25
>>849
自分で微調整
0853デフォルトの名無しさん2008/04/08(火) 20:03:53
ウィンドウハンドル取得してAdjustWindowRectは可能だろうか?
0854デフォルトの名無しさん2008/04/08(火) 20:16:24
サイズがなんピクセルとか考えなくて済むのがWPFでふぁ
0855デフォルトの名無しさん2008/04/09(水) 01:50:45
それはない
0856デフォルトの名無しさん2008/04/09(水) 02:18:22
>>853
試して報告してくれ。

ハンドルはWindowInteropHelperで取得できるから。
0857デフォルトの名無しさん2008/04/10(木) 10:28:09
>>854
まあそういう面もあるが、解像度はともかく比率くらいは固定したいところだ。
0858デフォルトの名無しさん2008/04/10(木) 17:52:36
自動サイズでキャンバス貼り付ければ
サイズの取得はできるかと。指定はどうだろねー?
0859デフォルトの名無しさん2008/04/10(木) 19:41:05
おまいらPowerStockうごかすとどのぐらいCPUくう?
Core2Duoマシーンで常時5-60%逝ってるんだが(;´Д`)
0860デフォルトの名無しさん2008/04/10(木) 22:09:28
Aeroは散々たたかれているが、3Dデスクトップ自体だめなのか、ほかのMacのQuartzとかLinuxとかどうなの?
0861デフォルトの名無しさん2008/04/10(木) 22:12:42
マーケティング部門にとっては嬉しい新機能
エンドユーザにとっては正直どうでもいい
エンジニアにとっては災厄の根源
0862デフォルトの名無しさん2008/04/10(木) 22:23:57
>>861
UIのベクター化は普通にエンドユーザーにも恩恵あるだろ
0863デフォルトの名無しさん2008/04/10(木) 22:31:19
* VistaのSuperFetchとAeroは安易に切ると遅くなる
http://pc11.2ch.net/test/read.cgi/win/1206549751/
0864デフォルトの名無しさん2008/04/10(木) 22:33:40
Aero別に悪くないけどな。もう一年使ってるわ。
使用感が違うしスペックの足りないマシンならもっさりかもしれないけど、慣れると平気。
今から改めてMacOSXとかGNOMEに慣れるのと大差ないだろ。
0865デフォルトの名無しさん2008/04/10(木) 23:12:15
MS自身がAeroの見た目しか宣伝しないからどうしようもないだろ。
0866デフォルトの名無しさん2008/04/10(木) 23:22:19
一般人にはGUIって言葉すら通じないからしょうがない。
0867デフォルトの名無しさん2008/04/10(木) 23:23:16
半透明効果云々でI/O負荷掛かり杉でイマイチだけど
UI処理をGPUにお任せするって方向性は正しいと思うよ
Aeroで見た目効果にコダワったのが敗因
0868デフォルトの名無しさん2008/04/10(木) 23:26:48
アルファブレンディングって32bppのうち詰め物分の8bit使ってるだけでふぁ
0869デフォルトの名無しさん2008/04/10(木) 23:40:45
Aero GlassのアニメーションがMacみたいに派手でないから、
ティアリングしないのがいいんだとか言っても一般人には
さっぱり伝わらないんだよね。
こけおどしであっても、今より派手なアニメ効果をイントール時
デフォルトON、「パワーユーザー」さん向けにオフにできるように
しといたらここまではネガキャンされなかったかも。
0870デフォルトの名無しさん2008/04/10(木) 23:48:09
Deep Color対応のPC用ディスプレイは普及するんじゃろか
0871デフォルトの名無しさん2008/04/10(木) 23:54:05
>>869
それはそれで2chとかの自称中級ユーザーとかには叩かれそうだなw
0872デフォルトの名無しさん2008/04/10(木) 23:58:53
まずはGDIとWinGの辺りから説かないとなw
0873デフォルトの名無しさん2008/04/11(金) 00:01:28
ティアリングって描画のvsync同期と関係しているのであって、
描画の派手さには関係ないような気がするんだけど。
0874デフォルトの名無しさん2008/04/11(金) 00:13:31
従来に比べたらメモリも食うから、派手で目立つメリットがないと受け入れにくいでしょ。
945Gに合わせなければもっと派手にできたんじゃない?
0875デフォルトの名無しさん2008/04/11(金) 00:27:32
どっちかっつと全ウィンドウを馬鹿正直にバッファに持つってー思想が間違いだったんでね?
なんぼマシンパワー余ってるつーたってメモリにゃ限りがある訳で
0876デフォルトの名無しさん2008/04/11(金) 00:31:38
共有コンテキストだと結局誰かが弄るたびに描き換えでは
0877デフォルトの名無しさん2008/04/11(金) 00:39:42
描画終わったあとなら、ウィンドウ1枚でバッファはせいぜい2〜4Mだろ。
ウィンドウ動かすたびにGDIで再描画かけるより、中身が同じなら移動分はDirectXで合成し直す方がいいって判断したんでしょ。
0878デフォルトの名無しさん2008/04/11(金) 03:13:04
デスクトップのこと忘れてねえかそれ
それにビデオカードなら独立して256Mとか使えるけど統合型だと結局メモリ圧迫する
0879デフォルトの名無しさん2008/04/11(金) 09:29:47
結局トレードオフだろ
メモリは多めに食うけど、Aeroオンだと確かにCPU負荷はオフのときに小さい
0880デフォルトの名無しさん2008/04/11(金) 09:30:11
オフのときに比べて、ねorz
0881デフォルトの名無しさん2008/04/11(金) 10:36:26
OSXではその辺どうなってるんだろうね。
http://arstechnica.com/images/tiger/quartz-10.0-4.png
これの中段図を見ると仕様はAeroとまったく同じに見えるが。
(ちなみに下段図のすべてGPUに任せるやつは結局ボツになったらしい)
0882デフォルトの名無しさん2008/04/11(金) 10:49:23
WPFって別にAeroと関係なくね?
XPでも動くんだし。
0883デフォルトの名無しさん2008/04/11(金) 15:28:23
WPFがXP上でも動くのは、ApacheがCygwin上でも動くみたいなもんだぞ。
0884デフォルトの名無しさん2008/04/11(金) 17:48:28
>>883
マーケティング的にはそんなイメージがあるけど、
WPFはXPでも、Vistaでもほとんど変わらないぞ。

見た目が違うのはWPFに限ったことじゃないし、
動作速度だってXPの方が速いくらいだ。
0885デフォルトの名無しさん2008/04/12(土) 08:43:29
>881の一番下みたいにいきなりGPUに飛ばせれば負荷が軽くなるんだけど
これが本当の意味のGPUを使ったアクセレーションなんだけどな
0886デフォルトの名無しさん2008/04/12(土) 08:47:01
>881
どうやらEnableできるらしい
http://journal.mycom.co.jp/column/osx/139/index.html
0887デフォルトの名無しさん2008/04/12(土) 13:28:45
できるのに、最新のLeopardでも無効にしてるってことは、致命的な問題があるんだろ。
あまり詳しくないけど
GPUのShaderってCPUに比べたらかなり低レベルなもんらしいし、
もっと賢くなるまで無理なんじゃないか。
0888デフォルトの名無しさん2008/04/12(土) 13:55:18
Direct3D 10.1の仮想化&マルチスレッド対応に期待だな。
10.1がオンボードに載ってそれにWPFが対応するまで1年以上かかりそうだが。
0889デフォルトの名無しさん2008/04/12(土) 17:44:07
AeroにしたところでいままでのアプリはGDIで描いてるわけだしな。
0890デフォルトの名無しさん2008/04/12(土) 17:56:45
アプリもGPU描画に移行させたいならネイティブから使えるAPI用意すりゃいいのにな
今のところWPFしかないってのが
0891デフォルトの名無しさん2008/04/12(土) 17:59:13
c#ネイティブだろ。
0892デフォルトの名無しさん2008/04/12(土) 18:05:18
>>884
ただしたまに差が現われることもあるね。

修正済みだけど下記の件。

「Windows XP または Windows Server 2003 で、
 レイヤード ウィンドウが有効になっている WPF ベースのアプリケーションのパフォーマンスが低下する」
ttp://support.microsoft.com/default.aspx/kb/937106/
ttp://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1810617&SiteID=1&pageid=0

歴史的経緯
ttp://blogs.msdn.com/seema/archive/2006/09/18/761314.aspx
ttp://blogs.msdn.com/seema/archive/2006/10/25/layered-windows-sw-is-sometimes-faster-than-hw.aspx
ttp://blogs.msdn.com/nickkramer/archive/2006/09/20/763037.aspx
0893デフォルトの名無しさん2008/04/12(土) 18:51:32
>>891
.NETのWindowFormsはwin32のラッパー
0894デフォルトの名無しさん2008/04/12(土) 20:03:40
WPFはC#ネイティブとも言えるな
0895デフォルトの名無しさん2008/04/13(日) 15:44:13
ウィンドウから
窓枠とかメニューを抜いた部分を指定のサイズにする命令はありますか?
0896デフォルトの名無しさん2008/04/13(日) 21:16:33
"窓枠とかメニューを抜いた部分" にコントロールを一つ置いてサイズを指定し、
他の部分はサイズを自動計算させればいい。
0897デフォルトの名無しさん2008/04/16(水) 13:11:35
まだ始めて間もないのですが、ちょっと教えてくださいまし。言語はC#です。
適当なCanvasを作って、このCanvasの上辺等に線を描きたいのですが、Canvasの大きさの変更に追従してほしいのですが
単純に Line クラスを作り、Line.X1 , X2 プロパティーの Canvas の幅を設定すると、大きさが変更されても追従してくれません。
使うクラスは Line である必要性はないのですが、こういった時はどうするのが一番てっとりばやいでしょうか?
0898デフォルトの名無しさん2008/04/16(水) 13:22:33
CanvasのSizeChangedイベントで処理
08998972008/04/16(水) 14:00:35
調べていて、ちょっと便利そうな機能があったのですが
<Canvas Name="canvasTitle">
 <Line Stroke="Black" X1="0" X2="{Binding ElementName=canvasTitle , Path=ActualWidth}" Y1="5" Y2="5"/>
</Canvas>
これで当初の目的は(それ以上の内容も)一応果たせそうです、ただ動的に生成したくてXamlで書くとちょっと調子が悪いです。
これに対応するC#のコードはどうなっているの教えてもらえると助かります。
Xamlとクラスライブラリの対応表はどこかにないですかね・・・・どこをみてもXamlの説明ばかりです。

>>898 ども、それは自分もいちばん最初に考えて面倒くさそうだなと思っていました。
0900デフォルトの名無しさん2008/04/16(水) 15:56:37
Border 使えばいいんじゃね?
0901デフォルトの名無しさん2008/04/16(水) 16:28:56
スノー
0902デフォルトの名無しさん2008/04/16(水) 18:59:41
いわゆる過疎
0903デフォルトの名無しさん2008/04/16(水) 21:54:10
>>899
Border を使えばいいと思うけど、そのまま C# 化すると↓こんな感じ。

var line = new Line{
X1 = 0, Y1 = 5, Y2 = 5,
Stroke = new SolidColorBrush(Colors.Black),
};
var bind = new Binding{
Mode = BindingMode.OneWay,
ElementName = "canvasTitle",
Path = new PropertyPath("ActualWidth"),
};
BindingOperations.SetBinding(line, Line.X2Property, bind);
this.canvasTitle.Children.Add(line);
0904デフォルトの名無しさん2008/04/17(木) 00:10:58
>>897
もう遅いかもしれんが、
LayoutTransformを使ってみてはどうだろうか?
0905デフォルトの名無しさん2008/04/17(木) 17:17:11
C#のコードで
Ellipseをcanvasの好きな位置に配置するにはどうすればよろしいでしょうか?
0906デフォルトの名無しさん2008/04/17(木) 17:38:57
>>905
依存プロパティでぐぐれ。
一例↓。
var ell = new Ellipse { Width = 10, Height = 10, Fill = new SolidColorBrush(Colors.Black) };
ell.SetValue(Canvas.LeftProperty, x);
ell.SetValue(Canvas.TopProperty, y);
0907デフォルトの名無しさん2008/04/17(木) 17:38:58
>>905
RenderTransform に値を設定すればいいです。
0908デフォルトの名無しさん2008/04/17(木) 19:10:31
前から思ってたけど
SetValueとかCanvas.SetTopって書き方回りくどいよね。
マクロ関数欲しいわ〜
0909デフォルトの名無しさん2008/04/17(木) 19:29:58
>>908
まあ、どうしてもというなら拡張メソッドでどうぞ。
0910デフォルトの名無しさん2008/04/17(木) 22:24:08
その手があったか。
0911デフォルトの名無しさん2008/04/18(金) 08:38:56
>>906-907
ありがとうございます
Canvas.SetLeft(ellipse, left);
Canvas.SetTop(ellipse, top);
でもいけました、ありがとうございました
0912デフォルトの名無しさん2008/04/18(金) 09:09:19
デザイナでキャンバスのサイズを決めると
ウィンドウからはみ出します。どうすればリンクさせられるの?
0913デフォルトの名無しさん2008/04/18(金) 10:15:12
Window.SizeToContent
0914デフォルトの名無しさん2008/04/21(月) 21:45:52
GeometryとかShapeを継承して新しい形状作ったりしたいんだが
詳しいサイトor良書おしえてくれぃ
0915デフォルトの名無しさん2008/04/21(月) 21:55:30
少なくともGeometryは無理(MSDNに明記)
Shapeも多分そういう使い方は想定されてない
0916デフォルトの名無しさん2008/04/21(月) 22:04:14
>>915
トンクス
CreateInstanceCoreは何を返せばいいんだろうとかずっと考えてた。
具体的には曲線(非ベジェ)をアニメーションさせたいんだが
今まで(Graphics.Draw***とか)と勝手がだいぶ違って困ってる。
0917デフォルトの名無しさん2008/04/25(金) 09:10:01
やっぱWPFというとGUI関連の話ばかりになるけど、
VistaのWPFで問題なく印刷できてるよ〜って人います?

現在xpsファイル作れてDocumentViewerでプレビューもできるけど、
印刷すると毎回どこか一部の文字が消えたり、スプーラからジョブが消えたり
挙動が怪しい。プリンタ機種変えても同じ。

でも、XPS Viewer Essential Pack使うとちゃんと出てくる。

あと、PageOrientation.Landscapeって無視されません?
うちだけなのかなぁ。
0918デフォルトの名無しさん2008/04/27(日) 08:44:20
そういう話はWindows板でやってくれ
0919デフォルトの名無しさん2008/04/27(日) 09:00:39
なんでだよ
0920デフォルトの名無しさん2008/04/27(日) 13:46:02
ここはサポートセンターじゃねーんだよ
0921デフォルトの名無しさん2008/04/27(日) 15:49:08
じゃぁおまえは疑問とか一切書き込むな
0922デフォルトの名無しさん2008/04/30(水) 16:45:06
Imageコントロールに表示した画像をScaleTransformで拡大する時に
最近傍補間に(拡大されたドットが見えるように)することできる?
RenderOptions.SetBitmapScalingModeってのを見つけたけど
バイリニアより下に設定できないみたいだし…
0923デフォルトの名無しさん2008/05/01(木) 09:30:10
>>922
つWindowsFormsHost+PictureBox
0924デフォルトの名無しさん2008/05/01(木) 13:37:31
WindowsFormsHostの上にWPFのコントロールを表示することは無理か?
いちいちFormsのコントロールの上にWPFコントロールを載せて……ってやればできるかな
SwingはJava7から普通にできるようになるらしいが
0925デフォルトの名無しさん2008/05/01(木) 14:06:08
> WindowsFormsHostの上にWPFのコントロールを表示することは無理か?
意義が良く分からない
0926デフォルトの名無しさん2008/05/01(木) 17:19:35
ああ、上にって、重ね合わせの問題
WPFコントロールはトップレベルのウインドウに描画するが、
Formsコントロールの実体は子ウインドウ
そうするとFormsのコントロールの上にWPFのコントロールを重ねても
Formsのコントロールが上に表示されてしまう
って話。上に来たWPFコントロールは自動的に子ウインドウになるとかやってくれればいいのに
パフォーマンスはまた別問題として
0927デフォルトの名無しさん2008/05/01(木) 17:22:34
HwndSource じゃ駄目?
0928デフォルトの名無しさん2008/05/02(金) 22:26:58
Formと比べるとWPFのデザイナがイマイチなんだが(イベント登録が手動だったり)
次期バージョンはいつ出るんだろう?
0929デフォルトの名無しさん2008/05/03(土) 00:53:29
イベント登録はWPFのほうが楽だと思うけどなぁ。
慣れると逆にFormのほうがめんどくさいよ。
その代わり、デザインだアニメ−ションだバインディングだと凝り始めると、
ややこしさが等比級数的に増していくような。
レス数が900を超えています。1000を超えると表示できなくなるよ。