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

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

レス数が950を超えています。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

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のほうがめんどくさいよ。
その代わり、デザインだアニメ−ションだバインディングだと凝り始めると、
ややこしさが等比級数的に増していくような。
0930デフォルトの名無しさん2008/05/03(土) 01:22:43
XAMLは、ツールを意識してデザインされた割には、
ツールが出揃っていない。
0931デフォルトの名無しさん2008/05/03(土) 01:28:14
そりゃー誰も使ってないし。
Vistaが大失敗した + 新規開発される世の中のサービスのほぼ全てはWebアプリ
0932デフォルトの名無しさん2008/05/03(土) 01:33:22
>>931
的外れな意見ありがとう!
0933デフォルトの名無しさん2008/05/03(土) 06:15:07
ワロタ
0934デフォルトの名無しさん2008/05/03(土) 09:17:01
>>929
言語仕様的にどうこう言うより、IDEの支援が貧弱なボーヤなのが問題
誰かブルーワーカー持ってこいと
0935デフォルトの名無しさん2008/05/03(土) 15:23:49
たまにしか使わないようなコントロールのイベント名探すのめんどいし、
やっぱメニューからイベント挿入出来る機能も欲しいな。
0936デフォルトの名無しさん2008/05/03(土) 15:31:08
目的別インテリセンスを付けるべき
0937デフォルトの名無しさん2008/05/03(土) 16:14:41
タブコントロールはひでーよ。
0938デフォルトの名無しさん2008/05/03(土) 16:18:50
これって何が目的なんだろ
xamlで誰か作って、使いまわしが目的なのか?
0939デフォルトの名無しさん2008/05/03(土) 16:54:22
XAMLで作ってるとC#とかのコードをできるだけ使いたくなくなるから困る。
0940デフォルトの名無しさん2008/05/03(土) 19:20:53
それは言えてるw
同じことをコードで書くとクドくなるんだよな。でもデバッグはしやすい。
0941デフォルトの名無しさん2008/05/03(土) 19:25:10
勉強し始めたばかりだけど、Bindingは何気に便利そうね。
RenderTransformやアニメーションがヌメヌメ動くのも楽しい。
画像をグリングリン動かしてもCPU負荷がほとんど無いのもいいね。
0942デフォルトの名無しさん2008/05/03(土) 22:18:18
逆に言うとそれくらいしかやることがない罠
表系のコントロールが弱っちいから、ちょっと凝ったことしようと思うと地獄のように面倒くなる
0943デフォルトの名無しさん2008/05/07(水) 23:57:43
Win32での「大きいアイコン表示のリストビュー」に相当するWPFのコントロールって
WrapPanelでいいのかな?
0944デフォルトの名無しさん2008/05/08(木) 00:01:44
ListViewだろ
恐ろしく柔軟なコントロール
0945デフォルトの名無しさん2008/05/08(木) 00:06:49
MSはもうちょっとWPFに力入れてくれないもんかな
0946デフォルトの名無しさん2008/05/08(木) 00:07:39
そなの?
MSDN斜め読みしたけど、ヘッダ付きの詳細表示くらいしかできない印象があった。
0947デフォルトの名無しさん2008/05/08(木) 15:23:16
resx内のリソース使えないのかよ・・・
シコシコとXMLテキストで定義書いてリソース管理するなんて前時代的だって。
XAML用リソースエディタ付けれ。
0948デフォルトの名無しさん2008/05/08(木) 23:14:17
>>946
DataTemplate 覚えたらやれること格段に増える。
マジで柔軟。

>>947
リソースはアプリと同じフォルダに生でおけって事っぽいね。
0949デフォルトの名無しさん2008/05/08(木) 23:33:10
いろいろ実験して分かってきた。
ListView.ItemsPanelでアイテムの並び方
ListView.ItemTemplateで個々のアイテムの表示を決めるのね。
0950デフォルトの名無しさん2008/05/09(金) 00:02:22
<Window x:Class="WpfApplication6.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="myWindow"
Title="Window1" Height="414" Width="468">
  <TextBlock Text="{Binding ElementName=myWindow, Path=Hoge}" />
</Window>

public partial class Window1 : Window
{
  public string Hoge { get; set; }
}

ウィンドウのプロパティをBindingするのはこういう方法でいいのかな?
0951デフォルトの名無しさん2008/05/11(日) 01:34:51
もう、Windows Formsなんかいらんから、
C++/CLI Express for WPFを作ってくれよ。
0952デフォルトの名無しさん2008/05/13(火) 13:49:38
来ましたね。

http://weblogs.asp.net/scottgu/archive/2008/05/12/visual-studio-2008-and-net-framework-3-5-service-pack-1-beta.aspx
http://blogs.msdn.com/greg_schechter/archive/2008/05/12/gpu-accelerated-custom-effects-for-wpf.aspx
0953デフォルトの名無しさん2008/05/13(火) 14:07:55
http://channel9.msdn.com/Showpost.aspx?postid=403854
ようやくWPFを使うとGPUの能力を引き出せる、と言えるようになったね
0954デフォルトの名無しさん2008/05/13(火) 15:18:53
おー、なかなか素敵。
これがVistaと同時に発表されてたら状況は変わってたよな〜
0955デフォルトの名無しさん2008/05/13(火) 22:50:33
WPF用のNotifyIconクラスとか追加されるん?
0956デフォルトの名無しさん2008/05/13(火) 23:22:21
ダメだよぉー。どんな簡単なことでもぉー、ゆうやく振り切ってSystem.Windows.Forms.Notifyiconだ。
0957デフォルトの名無しさん2008/05/13(火) 23:49:27
betaだと入れられる環境ないので勇者のレポを楽しみに待ってます(´・ω・`)
0958デフォルトの名無しさん2008/05/14(水) 04:18:19
うわああ、俺的にこのアップデートは神だ
0959デフォルトの名無しさん2008/05/14(水) 06:04:06
最近のMSの神技術は一般人が忘れた頃にやってくるな
0960デフォルトの名無しさん2008/05/15(木) 00:22:23
ちょっとこれはすごいと思った。
軽くなればMSもWPF使ってくれるよね?
0961デフォルトの名無しさん2008/05/15(木) 00:42:49
DirectXよりWPFのほうがいい?
チャートかかせたいんだけど、スクロール機能つきで
0962デフォルトの名無しさん2008/05/15(木) 00:50:34
ビジネスソフトなら、WPFがええのかな
質落ちるが、開発費も半減ならね
0963デフォルトの名無しさん2008/05/15(木) 00:51:37
>>961
DirectXではやりたくないな
0964デフォルトの名無しさん2008/05/15(木) 07:19:09
前にDirectXで折れ線グラフ作ったらめちゃめちゃめんどかった
描画は早かったけど
WPFに期待
0965デフォルトの名無しさん2008/05/15(木) 08:58:50
やったことないけど、Direct3Dだと
細長い長方形を線に見立てて描画する感じ?
0966デフォルトの名無しさん2008/05/15(木) 09:06:05
D3Dにも線描画機能あるよ。
C++ COM周りが面倒だったり、描画に至るまでの下準備が面倒ってことかも。

WPFのデータバインドしとけば折れ線引けるってのが簡単すぎなだけな気も。
0967デフォルトの名無しさん2008/05/15(木) 14:28:25
WPFの勉強を昨日から始めました。
WinFormsでいうMenuStripを実装したいのですが、
Menuクラスを使えば良いということまでは分かりました。
しかし標準項目の挿入という機能がありませんでした。

仕方なく自前で作っていこうと思い、MenuItemのHeaderを"ファイル(&F)"に変更しても思うとおりになりません。
InputGestureTextに"Alt+F"と設定しても思う通りになりません。

標準項目の挿入らしき機能の代替もしくはAlt + キーでのキーボードショートカットの実現方法について
アドバイスをお願いします。
0968デフォルトの名無しさん2008/05/15(木) 15:08:59
標準項目の挿入ってなんだ?

アクセスキーは "ファイル(_F)" のように & の代わりに _ を使えばいい。
0969デフォルトの名無しさん2008/05/15(木) 15:28:29
>>968
ありがとう、助かりました。

標準項目の挿入
http://msdn.microsoft.com/ja-jp/library/ms233662(VS.80).aspx
0970デフォルトの名無しさん2008/05/16(金) 14:42:25
標準項目の挿入ってお決まりのメニュー項目を一気に追加してくれるのか。
0971デフォルトの名無しさん2008/05/17(土) 14:16:01
これからはリモートでD3Dレンダリングみたいな変態プレイが易々とできるようになるわけっすか
XNAの方に技術転用してくんないかな
0972デフォルトの名無しさん2008/05/17(土) 23:57:02
そういえばD3DImageってリモート可能になるのかな?
0973デフォルトの名無しさん2008/05/18(日) 22:55:31
<UserControl x:Class="test.TestControl"
 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 Height="300" Width="300" Background="#FF222222" Foreground="White">
 <Canvas Height="Auto" Name="canvas1" Width="Auto">
  <Ellipse Canvas.Left="50" Canvas.Top="102" Height="100" Name="ellipse1" Stroke="White" Width="200" />
 </Canvas>
</UserControl>

XAML上では、Ellipseの位置はCanvas.Leftで指定できるけど
コード上でEllipseの位置を指定したいときはどうすればいいんだ?
0974デフォルトの名無しさん2008/05/18(日) 23:22:40
>>973
Canvas.SetLeft(ellipse1, 50);
添付プロパティってやつ。
0975デフォルトの名無しさん2008/05/19(月) 08:47:28
いま気づいたが、VS 2008 SP1ベータ入れたら、
<MenuItem Header="{Binding RelativeSource={RelativeSource Self}, Path=Command.Text}" Command="Open"/>
みたいなメニューがベータ入れる前は日本語ででてたけど全部英語に・・・。
0976デフォルトの名無しさん2008/05/19(月) 08:55:06
βが英語しか対応してないのは普通だけど、
成果物にまで影響出るのか。

どこかでロケール設定できる気もするけども。
0977デフォルトの名無しさん2008/05/19(月) 09:52:49
>>976
ごめん。書いてなかったね。
日本語VSに日本語SP1ベータ入れたのよ。
0978デフォルトの名無しさん2008/05/19(月) 21:09:23
>>974
ありがと!
0979デフォルトの名無しさん2008/05/20(火) 00:07:30
>>977
ちゃんとバグレポートしろよ
0980デフォルトの名無しさん2008/05/21(水) 02:20:41
ドラッグ&ドロップで特定のファイルのドロップを禁止する方法がわからんです。
WindowのDragEnterイベントで e.Effects = DragDropEffects.None
としてみたけど、ドロップできてしまう。
Windows Formの時はこれで制御できたんだけど。
0981デフォルトの名無しさん2008/05/21(水) 07:30:19
DragOverでe.Effects = DragDropEffects.Noneとしないとダメみたいだね

仕方ないので、DragEnterでドラッグ可能か判定して、
その結果をDragOverで返すようにしている
0982デフォルトの名無しさん2008/05/22(木) 00:19:22
980です。
>>981さん
DragOverでさらに e.Handled = true 入れたらできました。
ついでですが、画面のテキストボックスの上やタイトルバーだと
禁止マークが出るのですが、何とかならんでしょうか。
画面のどこにでもドロップできるようにしたいです。
0983デフォルトの名無しさん2008/05/22(木) 08:12:07
テキストボックスなどの他の要素上なら、PreviewDragOver。
タイトルバーはわからん。
0984デフォルトの名無しさん2008/05/22(木) 20:00:15
立てた
WPF(XAML,XBAP,.NET3.5)GUIプログラミング
ttp://pc11.2ch.net/test/read.cgi/tech/1211453941/
0985デフォルトの名無しさん2008/05/22(木) 20:05:05
>>984
0986デフォルトの名無しさん2008/05/22(木) 22:20:52
じゃ、ウメ
0987デフォルトの名無しさん2008/05/23(金) 01:55:47
GPUはそのうちなくなるよw
0988デフォルトの名無しさん2008/05/23(金) 01:57:54
いつまでもバージョンアップやらバグフィクスやらくりかえすんなら使えないんですけど.net
0989デフォルトの名無しさん2008/05/23(金) 02:00:53
世の中のソフトウェアすべてが使えないとお嘆きですね、わかります
0990デフォルトの名無しさん2008/05/23(金) 03:39:26
まぁ涸れ過ぎてどうもならなくなったJavaと言う例もあることだ
今頃メジャーバージョンうpしてもねえ
0991デフォルトの名無しさん2008/05/23(金) 10:51:26
埋め
0992デフォルトの名無しさん2008/05/23(金) 10:52:13
埋め
0993デフォルトの名無しさん2008/05/23(金) 10:52:35
埋め
0994デフォルトの名無しさん2008/05/23(金) 20:29:04
埋め
0995デフォルトの名無しさん2008/05/23(金) 20:29:31
花金埋め。
0996デフォルトの名無しさん2008/05/23(金) 23:01:15
Microsoft自体が終了しそうだ.net
0997デフォルトの名無しさん2008/05/24(土) 01:19:56
その前に鯖シェア喰われてSolalisとかが氏ぬ方が先だな梅
0998デフォルトの名無しさん2008/05/24(土) 01:32:31
OpenSolarisとOpenSparcがある限り、商用の方も生き残るさ
結局は開発者が興味を持つかが生き残りの鍵
レス数が950を超えています。1000を超えると書き込みができなくなります。