1

表示された TreeView を印刷する必要があります。

ルート TreeViewItem をビットマップにレンダリングすると、ツリー全体 (非表示ノードも含む) のイメージが得られます。次に、ビットマップを「ページ」に分割して印刷します。レンダリング コード:

m_Bitmap = new RenderTargetBitmap((int)l_RootTreeViewItem.ActualHeightDesiredSize.Width,
                                  (int)l_RootTreeViewItem.ActualHeight, 96, 96,
                                  PixelFormats.Pbgra32);

m_Bitmap.Render(l_RootTreeViewItem);

小さいサイズの樹木に適しています。ツリーが大きい場合、RenderTargetBitmap「メモリ不足」例外になります。

したがって、メモリの問題を回避するために、ビジュアルの一部のみをレンダリングするという考え方です。レンダリングするビジュアルのどの部分が完璧になるかを選択できるRenderメソッド...

m_Bitmap.Render(l_RootTreeViewItem, xOffset, yOffset, width, height);

...しかし、存在しません。それを行う方法はありますか?

4

1 に答える 1

1

私がすること:

  • あなたVisualBrushl_RootTreeViewItem
  • を作成し、ビジュアル ブラシをプロパティRectangleに割り当てます。Fill
  • 興味のあるツリー ビューの部分を操作してレンダリングVisualBrush.ViewboxするVisualBrush.Viewport
  • RenderTargetBitmap.Render必要に応じて長方形で使用する

編集

解決策 2

  • l_RootTreeViewItemキャンバスに入れる
  • ClipToBoundsキャンバスのプロパティを true に設定します
  • Canvas.WidthCanvas.Heightプロパティ、およびCanvas.LeftCanvas.Top添付プロパティで遊んで、の一部のみを表示しますTreeViewItem
  • PrintDialog.PrintVisual必要に応じてキャンバス上で使用してください。

    <Canvas Width="300" Height="300" ClipToBounds="True">
        <TreeViewItem Canvas.Left="-200" Canvas.Top="-100">
            ...
        </TreeViewItem>
    </Canvas>
    
于 2012-04-25T07:45:44.253 に答える