我們已經申請大致結構是這樣的:印刷在Silverlight 4
<Grid x:Name="LayoutRoot">
<ScrollViewer>
<Canvas x:Name="canvas">
<StackPanel> < Button /><Slider /><Button /></StackPanel>
<custom:Blob />
<custom:Blob />
<custom:Blob />
</Canvas>
</ScrollViewer>
</Grid>
每個斑點由1個或多個矩形,直線,和文本框;它們位於畫布上的任何位置。
如果我打印使用LayoutRoot文檔:
PrintDocument pd = new PrintDocument();
pd += (s, pe) => { pe.PageVisual = LayoutRoot; };
pd.Print("Blobs");
...它就像一個打印屏幕 - 滾動條,滑塊,是可見的斑點 - 打印。
如果我設置PageVisual = canvas,則不會打印任何內容。
我該如何獲得所有的blob對象,並只是打印這些對象?我是否需要將它們複製到另一個容器中,並將該容器分配給PageVisual?我可以使用ViewBox來確保它們都適合在一個頁面上嗎?
感謝任何指針....
有幫助,謝謝。可能有一種方法可以指定要打印的畫布的區域(矩形)...? 或者類似地,在StartPrint事件中,將Canvas的大小調整爲所有對象的最小邊界矩形,然後在EndPrint事件中恢復其大小。 最後,一個ViewBox可以轉換一個Canvas以適合一個頁面嗎? – Number8 2010-05-02 12:03:43
我不確定,我沒有試過這個,但是當你指定你有超過1頁並且內容不合適時,它必須做一些事情。 但是如果它確實什麼都不做,那麼在打印之前,您可能需要縮放分組畫布,然後在完成打印後將其縮小。 – texmex5 2010-05-03 04:17:26