用silverlight打印多次相同的图像

时间:2011-05-21 21:18:14

标签: silverlight printing

我有一个图像和一个文本框。用户在文本框中输入打印份数(N)和点击次数。打印机打印照片N次(每页3张照片,一张在另一张照片下)。

你会做那样的事吗?我是否需要先生成一个Silverlight页面?

2 个答案:

答案 0 :(得分:0)

有一个非常好的教程(下面的链接),其中包含Silverlight中高级打印技术的示例和源代码。 您需要将布局创建为自定义控件,这应该不会那么困难,但您不需要显示它。

http://www.silverlightshow.net/items/Advanced-printing-in-Silverlight-4.aspx

希望这能让你开始朝着正确的方向前进。

答案 1 :(得分:0)

Silverlight有一个非常简单易用的Printing API。我最近一直在使用它,并使用Melodatron列出的教程和this one over at the Visiblox site学习了如何使用它。这是他们的图表库特有的,但我发现它非常有用。

我假设您一次只能打印1张图片,如果您有更多,请告诉我。首先,您需要设置一个网格或类似的东西来放置您的照片。您将需要此网格中的N行。您必须在代码后面执行此操作,因为您要创建一定数量的行,但这可以通过以下方式轻松实现:

Grid grid = new Grid();

// Set the column and row definitions
for (int i = 0; i < Number of rows; i++)
{
    grid.RowDefinitions.Add(new RowDefinition()); 
}

那应该设置你需要的网格。拥有网格后,您需要使用您拥有的图像填充它。这非常简单,唯一的问题是您的图像不能多次使用 - 即您已有的图像只能出现在网格上一次。您必须复制它才能将其多次放置在网格上。我不确定您是如何创建图像的,但是您可以根据现有图像的源路径创建新图像?有关如何执行此操作的帖子here。如果您需要帮助,则需要提供更多详细信息。

// Set the column and row definitions
for (int i = 0; i < Number of rows; i++)
{
    // Duplicate your existing image here.
    Image image = new Image();
    grid.Children.Add(image);
    Grid.SetRow(image, i);
}

上面的所有代码都应该在这个方法中:

private void printDocument_PrintPage(object sender, PrintPageEventArgs e)
{
     //Code from above...

     e.PageVisual = grid;
}

在您要打印的按钮事件处理程序中,执行以下操作:

private void Button_Click(object sender, RoutedEventArgs e)
{
     PrintDocument printDocument = new PrintDocument();
     printDocument.PrintPage +=  new EventHandler<PrintPageEventArgs>(printDocument_PrintPage);
     printDocument.Print("TITLE");
}

希望这有帮助!