我們的應用程序在畫布上有許多對象;畫布包含在滾動查看器中。我們也有一個滑塊控件和一些按鈕,總是居中在窗口的頂部。
我試圖通過捕獲應用程序的位圖來打印應用程序,但沒有任何「裝飾」 - 滑塊,按鈕或滾動條。SL 4 - 強制重繪視覺樹
_scrollViewer.HorizontalScrollBarVisibility = ScrollBarVisibility.Hidden;
_scrollViewer.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden;
var s = xSlider;
s.Visibility = Visibility.Collapsed;
var b = xPlusButton;
b.Visibility = Visibility.Collapsed;
b = xMinusButton;
b.Visibility = Visibility.Collapsed;
b = xButton;
b.Visibility = Visibility.Collapsed;
滑塊和按鈕被隱藏,如預期的那樣,但滾動條不是。
我懷疑應用程序需要重繪佈局以隱藏滾動條。有沒有辦法做到這一點?由於SL 4中的打印操作必須由UI手勢啓動,所以這變得更加複雜; (AFAIK)無法以編程方式啓動,因此此重繪必須發生在PrintDocument事件處理程序之一中。
感謝您的任何建議....
您可以顯示您正在打印的Canvas的Xaml嗎? 「捕捉位圖」評論聽起來有點偏離,你能否說得通嗎? – AnthonyWJones 2010-08-31 19:58:38
我無法真正顯示xaml,因爲所有對象都在運行時添加,並大量使用模板。我相信這是導致惡作劇的模板;將Canvas傳遞給PrintDocument之後,該樹永遠不會重繪(至少不會完全)。由於打印輸出是大量缺失或未完成繪製的對象,因此顯示出來。 我們試圖捕獲Canvas的位圖來解決未完成繪製的對象問題。 – Number8 2010-09-08 14:52:48
你可以發佈你的捕獲位圖的代碼嗎? – 2011-06-30 06:43:56