<Border Name="border" CornerRadius="15" Margin="5"> <Border.Background> <VisualBrush> <VisualBrush.Visual> <Image Name="img" Stretch="UniformToFill" Grid.Row="1" /> </VisualBrush.Visual> </VisualBrush> </Border.Background> </Border>
以上代碼 通過 下面的 打印以後 img的Source 改變值以後也不可變了.. spa
RenderTargetBitmap bitmap = new RenderTargetBitmap((int)grid.ActualWidth, (int)grid.ActualHeight, 96, 96, PixelFormats.Pbgra32); bitmap.Render(grid); PrintDocument pd = new PrintDocument(); pd.PrintPage += new PrintPageEventHandler(pd_PrintPage); PngBitmapEncoder encode = new PngBitmapEncoder(); encode.Frames.Add(BitmapFrame.Create(bitmap)); MemoryStream ms = new MemoryStream(); encode.Save(ms); bitmap.Clear(); drawimg = System.Drawing.Image.FromStream(ms); //rect = new System.Drawing.Rectangle(0, 0, (int)grid.ActualWidth, (int)grid.ActualHeight); pd.Print();
須要用 border.InvalidateVisual(); 從新計算 UI... 緣由未知,先保留code