「 WPF 」一覧

WPF で描画結果を画像ファイルへ


GDI のメモリ DC で書いたオフスクリーンの内容で画像ファイルを作成するという方法はよく知られていると思います。これを WPF ではどうするのだろうと思って試してみました。

描画

まずは画像作成元となるものを作ります。 WPF では RenderTargetBitmap というクラスがあり、これを使うと保持している内容をビットマップとして取得が出来ます。
ただ、この RenderTargetBitmap に対して直接、直線や円を描く、というものではありません。Canvas オブジェクトを使って、Canvas に中身を描いて、この Canvas を RenderTargetBitmap にセットするというのが手軽に図形を描画する方法といえそうです。

続きを読む


WPF TreeView の破線描画付き その3


もうすこし TreeView の見た目に足掻いてみました。
今までのものは項目の部分でクリックが有効になるのですが、 Windows エクスプローラーなどではその行で選択できるようです。
これを実現してみようとトライしてみました。

結果

現時点の実装状態ではこんな感じが出来ています。

実現方法

通常のものだと TreeViewItem の要素は 田 の形で区切られて、右下の部分にさらなる子供のデータを表示するという実装になっています。
親から子供まで行をフルに選択させつつ見た目は従来通り、ということを実現するためにはこの方法を変更する必要があります。

では、どう実現するかですが、ここでは子供の深さ分を横にスライドするという方法を行ってみました。現在の深さからマージンを返すコンバーターを用意して、この実装としました。

今回のこの実装もまた GitHub のほうにおいてあります。
https://github.com/techlabxe/TreeViewCustomized2


WPF TreeView で破線付きを作ってみた その2


先日の続きの話になります。
TreeView の階層構造を破線でつなげて描画したものにするといったネタになります。

TreeView 本体ではなく、 TreeViewItem のテンプレートを編集して以下のようなものが実現できました。

標準のテンプレートで変更した箇所と言えば、開閉のための三角を+や-に変更したところでしょうか。
未使用の列については破線を描くために Rectangle を配置しています。

また今回の産物は GitHub のほうで公開してみることにしました。
何かの参考になったり、不具合の修正など提案して頂けたら幸いに思います。

https://github.com/techlabxe/TreeViewCustomized


WPF TreeView で破線付きを作ってみた


昔の Windows のツリーコントロールは破線によって項目が繋がっていたような気がします。
そんなツリーコントロールが WPF で実現できないかと思って試してみました。

まずは以下のページの情報を基本として使わせてもらいました。
https://stackoverflow.com/questions/19560466/how-to-make-wpf-treeview-style-as-winforms-treeview
http://d.hatena.ne.jp/Tan90909090/20150705/1436085068

こうして出来上がったのが以下のようなものです。

ただフォルダの開閉が思うように動いて、ぱっと見た感じの印象は悪くないのですが、実が項目の選択が出来ないという問題が残っています。

標準のテンプレートを変更してみる

標準の TreeView および TreeViewItem のテンプレートをカスタムする方向で再度トライしてみました。標準のスタイルとテンプレートはこちら、「TreeView のスタイルとテンプレート」 にて公開されています。

これを基本として、破線を書くようにしてみたものがこちらです。

TreeViewItem の中身が、Grid によって”田”のように区切られており、使用されていない箇所で条件によって破線を描画するようなパーツを配置して実現しています。

  • 項目末尾の部分(画面内での readme フォルダ)の部分の破線処理の補正
  • フォルダのアイコン
  • フォルダ開閉のボタンを田に変更する

このような点を修正したら、(記憶にある)昔ながらの TreeView になるのではと思っています。


Vulkan と WPF


年末年始のタイミングで Vulkan を少し勉強してみました。個人的な印象では DirectX12 よりも難しい感触がありました。
しかしながら、発表からある程度の時間が経っており、情報も比較的多くあったため三角形を1枚出せるところまで到達できました。
既に先陣を切ってくれた人が情報を公開してくれていたのが大変参考になりました。

続きを読む


ドッキングウィンドウ on WPF での OpenGLView


前回の延長戦で、ドッキングウィンドウとの組み合わせを試してみました。
ドッキングウィンドウには AvalonDock (WPF Extended Toolkit 付属) を用いています。

はじめに

AvalonDock でドッキング可能なドキュメントとして、前回の カスタム版 D3D11Image を貼り付けています。
ここに OpenGL の描画をはめ込む形です。

今までのものと大きく異なるのは以下の点だと思います。

  • 独立したウィンドウになることがある(フローティングウィンドウ)
  • 表示/非表示のタイミング
  • Window に貼り付けられているわけでなく UserControl 以下

これらの条件変化によって、動きが変わるかを確認してみました。

wpf_avalondock_ogl
続きを読む


WPF で OpenGL の描画はめ込み


WPF アプリで OpenGL の描画結果をはめ込めたらいいなと思ってトライしてみることにしました。
WPF は DirectX9 で動いているため、またアプリ全体で1つのウィンドウハンドルとなっているため、従来の C# フォームアプリのように特定の部分だけ描画を任せるというようなことが難しくなっています。

続きを読む