「 2017年09月 」一覧

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 になるのではと思っています。


EXT_external_objects の実験


OpenGL 4.6 の発表の中で、各Graphics API との Interop の話がありました。
ここで、EXT_external_objects 拡張 (スライドでは EXT_memory_object となっていましたが) が、面白そうだったので触ってみました。
ただしこの内容は OpenGL 4.6 に含まれるものではなく、追加という位置付けとなっているようです。

説明など

この EXT_external_objects 拡張は、 OpenGL に他の API で作成されたオブジェクトを利用するためのものとなっているようです。
提供される API 群は、こちらの仕様の方を確認してください。

OpenGL にとっての外部メモリを利用して、OpenGL のリソースを生成する(インポートする)といった感じで、機能が準備されています。

続きを読む