none
vb.net下wpf的canvas绘图与打印问题 RRS feed

  • 问题

  • 首先有一个叫做test123的xaml

    里面主要有一个label

     

    <Grid>
        <Canvas Height="212" HorizontalAlignment="Left" Margin="28,47,0,0" Name="Canvas1" VerticalAlignment="Top" Width="231">
          <Label Canvas.Left="50" Canvas.Top="55" Content="Label" Height="54" Name="Label1" Width="91" />
        </Canvas>
      </Grid>
    然后有一个按钮,
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
        Label1.Content = "123"
        Dim pdialog As New PrintDialog
        pdialog.PrintVisual(Canvas1, "hello123")
      End Sub

    设计如下:想按下按钮之后打印canvas1里面的label,理想应该是“123”,但实际打印出来的是“Label”,屏幕显示的是“123”。不知道修改label1.content的执行为何在打印之后了。求解

     

    • 已移动 Mike Feng 2011年8月1日 3:54 WPF (发件人:Visual Basic)
    2011年7月29日 18:46

答案

  • 请调用 Canvas1.Measure() and Canvas1.Arrange() 两个方法在打印前吧这个Canvas1重新生成下可视树和布局。这样就好了。

    label1.content的执行是即时有效的,但是这个直需要在LayoutUpdate的时候才会被更新到可视界面上。PrintVisual他取的是可视界面的结果,所以你的改变没有立即反应到PrintVisual中。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年8月1日 10:42
    版主

全部回复