silverlight控件打印预览

silverlight的打印预览,一般是给要预览的控件照一张快照,这是通过WriteableBitmap类给控件生成位图实现的。

但是WriteableBitmap类生成位图,必须要控件先经过渲染,要不然生成的是个鬼东西。

实际过程中,我们预览的时候,往往控件是没有经过渲染的,这时候有个偏方就是,把控件放在弹出窗体(ChildWindow)的某个位置,接着在load事件里面生成位图,然后把控件clear掉,或者设置控件的宽高均为0,已达到隐藏的目的。这时候生成的位图就很标准了。

最近两天,在做预览的时候,遇到了个头疼的问题。我要生成位图的控件里面有个ScrollViewer控件,这个控件通过WriteableBitmap类生成位图就不怎么理想,生成的位图只有用户能够看到的那部分,看不到的就渲染不了。碰到这种纠结的问题,我内心纠结了几天,我也试着各种方法去解决这个问题,但是都不理想。最后我把包含ScrollViewer的控件放在弹出窗体的一个ScrollViewer(S2)里面,然后在load事件中,调用S2控件的ScrollToVerticalOffset方法,滚动里面的内容到底部,结果神奇的事情出现了,包含ScrollViewer的控件能够渲染了,位图生成全了。唉,这个纠结的事情总算是结束了。

你可能感兴趣的:(silverlight)