1 名前:デフォルトの名無しさん [2009/12/27(日) 10:58:30 ] あたらしいユーザーインターフェースシステム、Windows Presentation Frameworkについ て語るスレ。.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 - June 2009 Release ttp://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29117 Visual Studio 2010 ttp://www.microsoft.com/japan/msdn/vstudio/2010/overview/ 関連スレ Microsoft Silverlight その4 ttp://pc12.2ch.net/test/read.cgi/tech/1244812356/ 過去スレ WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3 ttp://pc12.2ch.net/test/read.cgi/tech/1245384489/ WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3 ttp://pc12.2ch.net/test/read.cgi/tech/1231506876/ 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/
551 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 22:29:22 ] google booksでwpf検索してみたら だいたい用は足りると思う
552 名前:デフォルトの名無しさん [2010/04/16(金) 00:11:31 ] ボタンの中に画像を置く ということをXMALではなくC#のコードから実現したいです。 ネタとしては、ここの質問のC#版です。 質問内容を理解しないでXAMLの話をする回答者が多いみたいですが。 ttp://bbs.wankuma.com/index.cgi?mode=al2&namber=38523&KLOG=66 プログラム内で動的にButtonを配置したいため、 XAMLではなくC#から生成したいのです。 画像の情報も動的に取得するので、画像もC#で生成したいです。 (実際には、画像のパスを動的に取得し、そのパスからImageを生成) ググってもXAMLの話ばかりです。よろしくお願いします。
553 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 00:23:24 ] Imageを持ったButtonのUserControlをXAMLで書いておいて、コード内で生成
554 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 01:45:52 ] >ということをXMALではなくC#のコードから実現したいです。 そうですか >質問内容を理解しないでXAMLの話をする回答者が多いみたいですが。 そうですか >XAMLではなくC#から生成したいのです。 そうですか >画像の情報も動的に取得するので、画像もC#で生成したいです。 そうですか >ググってもXAMLの話ばかりです。よろしくお願いします。 なにをよろしくですか
555 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 01:48:33 ] ちなみに 38526の回答以外のなにものでもないよ 質問内容を理解しないんじゃなくて、回答読んでも理解できない脳みそを恨め
556 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 02:02:05 ] >>554 中身の無いレスだな お前みたいなのは来なくて良いよ
557 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 02:11:34 ] >>556 これがどれだけ程度の低い質問かわかんないってことは本人だろうな・・・
558 名前:552 mailto:sage [2010/04/16(金) 02:19:45 ] >>553 ありがとうございます。 UserControlなるものを使ったことが無いので 早速調べてみます。 >>554-555 38526がコードの話をしていることは分かっています。 >XAMLの話をする回答者が多いみたいですが。 と書いているのは、それを示しています。 38526の回等と>>553 氏のレスが同値だと分かるレスを していただき、ありがとうございます。 >>556 555のレスから得たことがありますので大丈夫です。 >>557 552は私です。 UserControlの話など、もっと汎用的な調べ方をすれば 沢山情報が得られるのかもしれませんが、具体的な事例が あまりないというのは、それだけ壊滅的なほどに初歩的ということなのですね。 もっと勉強します。ありがとうございました。
559 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 02:20:54 ] >>557 は?程度の低さは関係ないだろ どれだけ馬鹿なんだよ
560 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 02:21:32 ] >>558 違うよ ButtonオブジェクトのContentプロパティにImageオブジェクト突っ込めばいいだけ
561 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 02:22:47 ] >>559 はいはい お前が気の済むように回答してやれよ
562 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 02:29:42 ] >>561 >はいはい え?マジで分かってないの? こりゃ重症だな。関わらないでおくよ。 >お前が気の済むように回答してやれよ うわーまいったねこりゃ。 既に解答が出ているのに更に回答しろと? 別の機会に謹んで回答させていただきますw
563 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 02:32:36 ] >>562 中身の無いレスだな 以下略
564 名前:558 mailto:sage [2010/04/16(金) 02:55:46 ] >>560 お恥ずかしいです。ありがとうございます。 質問をする前にスレを見返していましたが、 人を馬鹿にするレスしかしない人が多い中、 あきれずに回答していただきありがとうございました。
565 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 06:49:02 ] 横着せずにWPF入門書を最初から読んでいけばコントロールの追加方法なんて最初にかいてある。 なんで未知の言語なのにチュートリアルすっとばそうとするかな。 別にすっとばしてもいいけどひとりで悩んでくれよ。ひとのせいにすんな。
566 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 07:26:49 ] これだからIDの無い板は。
567 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 07:51:10 ] >>565 おおむね同意だが >ひとのせいにすんな。 これってどこを見て感じたことなんだ? なぜこう感じたのか、俺には全く分からんのだが。
568 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 11:50:17 ] blend4のベータ出たな www.microsoft.com/expression/products/Blend4RC_Features.aspx めぼしい機能追加はピクセルシェーダくらいじゃないのかな あとはギャラリーで公開してくれれば済むような追加しかないような
569 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 11:59:39 ] ああでも3->4のアップグレードは全員無料なのか
570 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 12:02:40 ] スレ伸びてるから WinSDK 7.1 でも出たのかと思ったら・・・ >>552 >質問内容を理解しないでXAMLの話をする回答者が多いみたいですが。 XAML ←→ C#コード なんか、ボタンやイメージどうこう以前に WPF の基礎だから。 自分の無知を棚上げに「理解しないで」などと回答者をアホ扱いするから荒れる訳。 「M女史の遺したもの」を一回は読んでおくといいよ。 public Window1() { InitializeComponent(); this.Content = new Button { Content = new Image { Source = new BitmapImage(new Uri("c:\\image\\test.bmp", UriKind.Absolute)) } }; }
571 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 14:07:51 ] 「.netなんて池沼にもできる障碍者用言語だろ余裕だよ。入門書?そんなもん小学生にでも読ませとけ」 →「はー?なんでうごかねーんだよこの欠陥言語。おいくずどもどうなってるか説明しろ!」 ようするにこういう思考だろ。 「なんでおれがこんな低レベル言語にてこずらなきゃならないんだよ」みたいな 雰囲気ぷんぷんさせながら質問するとか鼻で笑うわ
572 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 22:21:44 ] > ボタンの中に画像を置く > ということをXMALではなくC#のコードから実現したいです。 キチ○イwww
573 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 00:01:45 ] >>570 へーこんな書き方できるんだ はじめて知った。 >>571 お前みたいに"決め付ける"人って 大抵・・・
574 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 09:50:13 ] WPFで「コードから動的にボタンを配置したい」ということ自体めったに無いよね WinFormsでそうやってたようなことはアイテムテンプレート使えばだいたいXAMLだけで完結する
575 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 13:18:15 ] アイテムテンプレートでできるけどある条件の時はこっちとかするのも含めてコードで書いちゃった方が好きかなー
576 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 14:52:46 ] XAMLって「データ言語」っていうんだっけ。 プロパティの指定はXAMLコードから判るが、メンバの設定は何度読んでも混乱する。
577 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 22:05:41 ] Rectangleを20個ほど一気にAnimationさせると Core2 E7400 + GeForce9400GT でも若干ガクガクするんだけど WPFってそんなもんなの? それとも、うまい書き方があるの? RectangleはXAMLで配置して、AnimationはC#内で書いてるんだけど。
578 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 22:18:56 ] 描画だけでよければDrawingVisual使ってみたら 間違ってもDrawingContextは使わないように
579 名前:577 mailto:sage [2010/04/19(月) 23:12:18 ] >>578 ありがとう、調べてみた。 これってアニメーションできないように思うんだけど そんなことないの? イベントとかは使わないから描画だけといえばそうなんだけど。 20個(できればそれ以上)のRectangle、長い長方形をぐるぐる回したいんだよね。 風車がたくさん立っているイメージ。
580 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 00:46:03 ] オブジェクトの重なりが多いほど重くなる
581 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 00:47:39 ] CPUでピクセルの合成してるんだっけ? そういうのはGPUが得意なんだがな・・・
582 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 00:49:14 ] WPFのウインドウ内部は全部directxで書いてるって何回書いたらわかるんだよ けちらずエッセンシャル買え
583 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 01:35:21 ] >>579 その程度のアニメーションなら普通にStoryboardじゃいかんの?
584 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 12:27:39 ] 描画じゃなくてレイアウトとか入力とか高次の部分で引っかかってるんだろ RenderTransform使ってみるとか
585 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 11:11:04 ] みんなRelayCommandとDelegateCommandのどちらを使ってる?
586 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 12:11:56 ] 使うも何も両方ともただのサンプルでしょ 必要に応じて自分で作るんだよ
587 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 12:19:10 ] 他人に説明するとき、アレと一緒で済むから楽じゃん。
588 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 15:06:02 ] www.codeproject.com/KB/WPF/NitoMVVMCommands.aspx?msg=3132936 面白い比較の記事を見つけた。 こういうのを探していたんだ。 終わりの方の比較のところね。
589 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 21:53:09 ] というか RelayCommand でも DelegateCommand でもどっちでもいいけど 標準で用意しときゃいいのにとはおもったわ。
590 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 22:00:52 ] だってMとVMはWPFと関係ないじゃん
591 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 22:26:42 ] 依存プロパティではCLRラッパーが使えて、添付プロパティでは 使えないのはどうして? MSDNでは「WPF の添付プロパティには、get および set のアクセスを容易にするための 標準的な CLR "ラッパー" メソッドはありません。 これは、添付プロパティが設定されたインスタンスの CLR 名前空間に、 その添付プロパティが属しているとは限らないからです。」 って書いてあったけど。つまり・・・どういうことだってばよ
592 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 22:33:09 ] 自分自身のプロパティじゃなくて他のオブジェクトに設定するプロパティだから プロパティ構文じゃ書けないよってこと
593 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 22:33:59 ] たとえばCanvasのLeft添付プロパティはCavnasクラスに定義されたプロパティだけど そのプロパティの値を実際に持つのはCanvasの中に追加する他のクラスのインスタンスだろ CLRプロパティではプロパティが定義されてるクラスとその値を持つインスタンスのクラスは必ず一致するけど 添付プロパティでは一致しないからCLRプロパティでは表現できない
594 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 22:39:53 ] でも、アクセスする構文ってCanvas.Leftみたいに[クラス名].[プロパティ名]でしょ。 ラッパーを静的にする必要はあるけど、コードからでも普通に使えそうだけどなあ。
595 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 22:42:44 ] だからCanvas.SetLeftメソッドがあるだろ
596 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 22:44:03 ] 「どのオブジェクトの」Canvas.Leftなのよ? ということになって結局Canvas.GetLeft(obj)で十全だろ、分かりやすいし
597 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 22:48:49 ] 設定を行うインスタンスを知る必要がある(引数として送る)からラッパーでは出来ないってことか なっとく
598 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 23:04:20 ] Obj.Canvas.Left とかならまだわかる
599 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 23:06:01 ] Obj[Canvas.Left]だな
600 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 23:15:27 ] DependencyObjectにthis[DependencyProperty]を定義すると obj[Canvas.LeftProperty]にせざるを得ないからなぁ objectでしか扱えないし それ以上は言語の方に手を入れなきゃなんなくなる いや、dynamicでなんとかなる・・・か? しないで良いけど
601 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 23:20:15 ] WPF は結局ユーザーの要求するパフォーマンスに達しなかったね。
602 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 23:50:23 ] 自分が使いこなせないからってひとも同じだと思う人って…
603 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 02:50:17 ] BlendとかXamlPadみたいにリアルタイムでXamlの内容を表示するのってどうやるの?
604 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 06:57:38 ] >>603 これがおのぞみのかな? XamlPadを作ってみた。 pro.art55.jp/?eid=863237
605 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 07:42:46 ] >604 それリアルタイムでの編集内容反映は入ってないよね?
606 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 21:28:40 ] >>604 おー、意外にシンプルでびっくり。さんくす >>605 更新タイミングは工夫次第でいけそう。
607 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 23:02:07 ] テキスト変更イベントのたんびにパースするとかね。
608 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 23:26:42 ] あるWindow window1 があって、 window1の中のある領域に X を配置して、 その X の中を右方向にアニメーションさせた場合、 X の右端がXの左端にくっついたように ずっと X がループされてスライドするアニメーションって どうやったらできますか? ここで X とは、CanvasでもPageでも何でもよいので、 ボタンとかラジオボタンとかが配置できる領域のことです。 説明が難しいのですが、例えば window1 に電車を描き、 電車の窓から X (外の景色) を眺めているとし、外の景色が ずっとスライドしていく感じです。 このとき、X に動的に「電柱」の絵を置いたら、ループ絵として 次に現れる X にも「電柱」が存在するように見せたいです。
609 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 23:36:59 ] はじっこにきたら座標もどせばいいだけじゃないの?
610 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 23:40:12 ] 一番手抜きだと1枚の画像を座標変えて常に2回表示すればいいだけだろ
611 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 00:01:30 ] >>609 ありがとうございます。ですが、それだと絵が切れてしまいます。 窓の大きさが X と同じで、動かす絵が X の場合、 X を右にスライドさせると、Xの左側が空白になります。 X1 X2 と Xを並べて、X2がXの領域からはずれたら X1 の左に 配置するようにすれば実現できますが、そうすると X1 と X2 が 同じものになりません。X1に電柱が追加されたらX2にも追加、となると 処理が重たくなりますので・・・。 >>610 ありがとうございます。 そちらの方法で、チカチカさせない方法があるのでしょうか??
612 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 00:08:20 ] >>611 まあ>>610 の方法はゲームの一般的なループの作り方なだけで そのまんまはだめかもしれないけどねw なるべく再利用した方がいいかと思って>>610 として書いたけど ちらついたりするならとりあえずは1つのファイルを内部で2つ同じものを作って とかはだめ?
613 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 00:11:20 ] それでもうまくいかないならとりあえずは読み込む画像その物を 同じ物を2枚並べた横長で作っておいて座標で調整するか
614 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 00:13:10 ] expressionの4にMVVMのプロジェクトテンプレートが入るみたいね これが標準のフレームワークってことになんのかしら
615 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 00:14:55 ] >>612-613 やはり冗長な部分を作って 必要な部分だけ見せるのが手っ取り早いみたいですね。 なるべくなら再利用したいのですが、ひとまず↑でやってみます。 では、失礼します。
616 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 00:25:33 ] >>615 画像をTile指定で表示してやれば自動的に繰り返しになる。 あとはViewportを動かしてやればいい。 ttp://www7a.biglobe.ne.jp/~fbsoft/test/miku1.cgi
617 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 00:31:51 ] IEはソース表示が出来ないようなのでXAMLのソースも張っとく。 ttp://codepad.org/jGnPpTxR
618 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 00:43:03 ] >>616-617 おぉ、このようなものもあるのですね。 寝る前に見て良かったです。 ざざっと調べてみたのですが、こちらの方法では 画像を複製表示することはできるようですが、 Buttonなどが配置されたPage(を配置したFrameなど)を 複製表示させることはできないみたいですね。 (調べ方が甘かったらすみません) 教えていただいた TileMode で絵を複製して、 Buttonなどは自分で複数配置する方法も検討してみます。
619 名前:618 mailto:sage [2010/04/23(金) 00:55:24 ] 度々書き込み失礼します。 TileMode から色々と調べてみましたが、 Canvas Neme="canvas1" にボタンなどを配置し、 <Rectangle ... > <Rectangle.Fill> <VirualBrush Visual={Binling element=canvas1}" /> </Rectangle.Fill> </Rectangle> とすると、一応 Button なども複製されますね。 しかし(当然ですが)複製された絵の Button は操作できませんね。 残念です。
620 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 01:19:32 ] スライドしてる状態でボタンなどを操作する必要も無いだろうから、 動いてないときは普通に表示して、 スライド中だけVirtualBrushに入れ替えればいいんじゃない。
621 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 01:36:50 ] スライドといってもゆっくりのものでして 移動中でもクリックに反応して欲しいんです。
622 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 02:09:47 ] その手のは一枚絵としてスクロールさせるというよりも同サイズでスライスした要素みたいに考えて クリッピングと組み合わせて実現するのが常套じゃないのかな
623 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 04:11:30 ] プログラムなんてプリミティブなアイデアの集合体なんだから 自分ですこしは考えなよ
624 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 06:47:11 ] >>623 そういうことは2ch言ってもしかたないと思うんだぜ
625 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 07:47:11 ] >>623 >>619 では「考えている」認定されないのか。 2chって厳しいインターネットなんだなw
626 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 14:20:14 ] 二度手間でもエレガントじゃなくても冗長でも、数学的な問題じゃない限り 自分の望むことをコードにすることはできるだろう、諦める=考えてない、ってことさ
627 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 18:38:39 ] richtextboxで行間を指定する方法はない? LineHightやMarginを試してみても変わらなかった
628 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 18:39:55 ] nyuryuが言っていたが、WPFでもすべての部分にDirectXを使っているわけではないらしい。
629 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 18:49:52 ] >>627 WPFじゃなくてWinFormのでいいんだよな? LineHeightってどのクラスのプロパティ? 行間ってのは段落間じゃない行間のことでOK? まあEM_SETPARAFORMATとPARAFORMAT2使うことになると思う >>628 にゅりゅ ってエロい響きだな
630 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 19:13:55 ] >627 WPFでフォントコントロールったら、 FormattedText クラスじゃないんか? ttp://msdn.microsoft.com/ja-jp/library/system.windows.media.formattedtext%28v=VS.80%29.aspx
631 名前:629 mailto:sage [2010/04/23(金) 19:16:34 ] あ、ここWPFスレだった C#スレと勘違いしてた、ごめん
632 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 19:22:45 ] FlowDocument全体の行間ならFlowDocument.LineHeightで問題ないと思うけど
633 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 22:08:51 ] >>627 WPFの方
634 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 12:07:11 ] すまん。 自己解決した。 トークンごとに読み取ってそのトークンをパラグラフを追加するときに\r\nを無視しないのが原因だったらしい。 xamlを調べて初めて原因が分かった 間違い <flowdocument> <paragarh>aaaa<run>(見えないが\r)</run><run>(見えないが\n)</run></paragrah> </flowdoument> 正しくは <flowdocument> <paragarh><run>aaaa</run></paragrah> </flowdoument>
635 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 14:56:26 ] Paragraph p = richtextbox.CaretPostion.Paragraph; TextRange range = new TextRange(p.ContentStart, p.ContentEnd); this.para = new Paragraph(); this.para.Margin = new Thickness(0); this.Spilitter.Parse(range.Text); this.doc.Blocks.InsertBefore(p, this.para); this.doc.Blocks.Remove(p); パラグラフの置き換えを行うとキャレットがパラグラフの一番最後に移動してしまう。これを防ぐ方法はない?あらかじめCaretPostionを覚えておいて、置き換えた後で戻してもダメだった。
636 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 16:15:42 ] >>635 var curP = richTextBox.CaretPosition.Paragraph; var offset = curP.ContentStart.GetOffsetToPosition(richTextBox.CaretPosition); var newP = new Paragraph(); newP.Inlines.Add("New Paragraph"); richTextBox.Document.Blocks.InsertBefore(curP, newP); richTextBox.Document.Blocks.Remove(curP); richTextBox.CaretPosition = newP.ContentStart.GetPositionAtOffset(offset) ?? newP.ContentEnd; これじゃダメなん?
637 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 21:42:03 ] >>636 それだとだめだ。 aaa (aaaの先頭でzを入力) zaaa (連続で入力すると、zazaaになってしまう) なんでWPFってこんなに面倒なの? 文字単位で選択することもできないし、キャレットを文字単位で動かすことすらできない。 開発者は馬鹿なの?
638 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 22:10:32 ] >>637 何がしたいのか分からないんだけど。 文字単位で選択するなら: richTextBox.Selection.Select(richTextBox.CaretPosition, richTextBox.CaretPosition.GetPositionAtOffset(10)); キャレットを次の文字に移動するなら: richTextBox.CaretPosition = richTextBox.CaretPosition.GetNextInsertionPosition(LogicalDirection.Forward); TextPointer クラスと RichTextBox クラスについて、もうちょっと調べたら?
639 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 22:33:53 ] >>638 目がシパシパしたwww
640 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 02:37:57 ] >>638 パラグラフが aaa となっているときに bbb aaa とすると、aaaを削除するとキャレットがaaaの先頭にあるにもかかわらず、bbbの後ろに移動してしまうのをどうにかして防ぎたい。 TextPointerについても調べたんだが、画面に表示されている文字単位で位置を取得するメソッドはなぜかなかった。
641 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 09:54:47 ] >>640 >aaaを削除すると は >>635 の this.doc.Blocks.Remove(p);に当たるのかな 言ってることがあんまよくわからないけど、空のパラグラフを置いといてその先頭にキャレット置くというのがやりたいんじゃないの? ソースはそうなってないだろ
642 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 10:24:40 ] >>641 >言ってることがあんまよくわからないけど、空のパラグラフを置いといてその先頭にキャレット置くというのがやりたいんじゃないの? それじゃなくて、パラグラフを置き換えてもキャレットの位置をそのまま保つということがやりたい
643 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 23:47:54 ] ScrollViewerのマウスホイールによるスクロールを無効化する方法はありますか?
644 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 00:03:42 ] PreviewMouseWheelでHandledしちゃうとか
645 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 00:52:19 ] >>644 e.Handle = trueでうまくいきました ありがとうございます
646 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 03:26:57 ] こんな感じでボタンを並べるにはどうすればいいんでしょうか? uproda.2ch-library.com/239369drL/lib239369.png 平行四辺形とかでしたらなんとかなるんですが・・・
647 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 04:25:39 ] 表示部分にしかあたり判定がないんだから同じpanelに全部かさねて表示だけかえればいいじゃない そんな形なら標準ボタンを使うわけでもないんでしょ
648 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 06:27:53 ] ufcpp.net/study/dotnet/wpf_uielement.html 傾斜とかもできるので上辺もしくは下辺を短くするとか できるかなあと思ったんですが無理ですかね?
649 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 07:04:59 ] Expression Blend で簡単に星形のボタンとか作れるみたいだね。
650 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 07:09:59 ] ジオメトリの作り方がわからないから四角の変形で作りたいっていうなら アフィン変換使いなよ自分で計算してな
651 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 08:48:31 ] Blend使えればベストだけどボタンぐらいならXAMLだけでなんとかなる。 ContorolTemplateを書けばいいだけでサンプルも結構転がってるから。 あとエッセンシャルWPF読んどけ