C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: TreeViewのイメージを印刷


(過去ログ 102 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■61037 / inTopicNo.1)  TreeViewのイメージを印刷
  
□投稿者/ 五右衛門 (1回)-(2011/07/30(Sat) 11:46:41)

分類:[VB.NET/VB2005 以降] 

(開発言語:VB2008)
TreeViewを使って、部品の親子関係を表現するツリーを表示しています。
このツリーを印刷するにはどのような方法があるでしょうか?

アプローチの一つとして、ツリーのイメージを使用するということを思いつき、色々と調べた結果、
同様の質問がこのサイトにもありました。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=55970&KLOG=94

これを見ると、DrawToBitmapメソッドで、TreeViewのイメージをキャプチャーする方法があるようですが、
スクロールバーが出ていると、隠れている部分のイメージは得られないようです。

そこで、苦肉の案として、TreeViewのスクロールを自動的に制御しながらキャプチャーを繰り返し、
これを結合させようと考えました。
Panelのスクロール位置制御は行ったことがあるので(AutoScrollPositionプロパティを制御)、
同じようにできるかと思いましたが、TreeViewにはAutoScrollPositionプロパティはありませんでした。
その代わり、AutoScrollOffsetというプロパティがあることが分かり、このプロパティを色々と変更してみましたが、
TreeViewのスクロール位置は全然変わりません。
座標の値に正の値だけでなく、負の値も設定して試してみましたが、ピクリとも変化しません。
AutoScrollOffsetの使い方が間違っているのでしょうか?

また、本来の目的はツリーの印刷なので、他にいい方法があれば是非ともアドバイスをお願いします。
引用返信 編集キー/
■61044 / inTopicNo.2)  Re[1]: TreeViewのイメージを印刷
□投稿者/ 五右衛門 (2回)-(2011/07/30(Sat) 17:06:05)
No61037 (五右衛門 さん) に返信

自己レスです。
試行錯誤の結果、以下のようにしたら、TreeViewのイメージをキャプチャーできました。
1.今までTreeViewのあった位置にPanelを配置し、この中にTreeViewを配置する。
2.TreeViewのScrollableはFalseにし、PanelのAutoScrollをTrueにする。
  (TreeViewのスクロールは使用せず、Panelのスクロール機能を使う。)
3.TreeView内のノードのBoundsプロパティよりノードの位置・サイズを調べ、
  その結果よりTreeViewの大きさを決定する。
  (今回はTreeViewはすべてのノードを展開した状態で表示し、この状態からノードの追加等は行わないので、
  これでも大丈夫。)
4.この状態でTreeViewのDrawToBitmapメソッドで、全体のノードのイメージが得られる。

後は、得られたイメージをもとに、サイズ調整をして印刷すれば良さそうなので、解決とします。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -