При клике на кнопку Print и выборе принтера я получаю распечатаную страницу с белой границей по краям(как и ожидалось). Но если вместо принтера я выбираю Microsoft XPS Document Writer то получаю страницу с белой границей слева и вверху. Но почему ее нет внизу и справа, а LightSteelBlue фон простираеться до краев страницы? 1 - pdf) http://pic.ipicture.ru/uploads/090417/eSRQuLf4Bj.jpg2 - xps) http://pic.ipicture.ru/uploads/090417/0VRwsmFUWB.jpgКод | <Window x:Class="Printing.PrintVisual" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="PrintVisual" Height="259" Width="282" > <Grid Margin="5" Name="grid"> <Grid.RowDefinitions> <RowDefinition></RowDefinition> <RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition> </Grid.RowDefinitions>
<Canvas Name="canvas"> <TextBlock Canvas.Top="50" Canvas.Left="20" FontSize="25" FontWeight="Bold">Hello There</TextBlock>
<Path Fill="Yellow" Stroke="Blue" Margin="5" Canvas.Top="10" Canvas.Left="10" > <Path.Data> <GeometryGroup> <RectangleGeometry Rect="0 0 100 100"></RectangleGeometry> <EllipseGeometry Center="50 50" RadiusX="35" RadiusY="25"></EllipseGeometry> </GeometryGroup> </Path.Data> </Path>
</Canvas>
<StackPanel Orientation="Horizontal" Grid.Row="1"> <Label>Scale Percentage:</Label> <TextBox MinWidth="50" Name="txtScale">500</TextBox> </StackPanel> <Button Grid.Row="3" Click="cmdPrint_Click">Print</Button> </Grid> </Window>
|
Код | public partial class PrintVisual : System.Windows.Window {
public PrintVisual() { InitializeComponent(); }
private void cmdPrint_Click(object sender, RoutedEventArgs e) { PrintDialog printDialog = new PrintDialog(); if (printDialog.ShowDialog() == true) { // Scale the TextBlock in both dimensions. double zoom; if (Double.TryParse(txtScale.Text, out zoom)) { grid.Visibility = Visibility.Hidden;
// Add a background to make it easier to see the canvas bounds. canvas.Background = Brushes.LightSteelBlue;
// Resize it. canvas.LayoutTransform = new ScaleTransform(zoom / 100, zoom / 100);
// Get the size of the page. Size pageSize = new Size(printDialog.PrintableAreaWidth, printDialog.PrintableAreaHeight);
// Trigger the sizing of the element. canvas.Measure(pageSize); canvas.Arrange(new Rect(10, 10, pageSize.Width - 20, pageSize.Height - 20)); // Print the element. printDialog.PrintVisual(canvas, "A Scaled Drawing");
// Reset the canvas. canvas.Background = null; canvas.LayoutTransform = null; grid.Visibility = Visibility.Visible; } else { MessageBox.Show("Invalid scale value."); } }
} }
|
Это сообщение отредактировал(а) sealmu - 17.4.2009, 17:44
|