我有一个图像和一个文本框。用户在文本框中输入打印份数(N)和点击次数。打印机打印照片N次(每页3张照片,一张在另一张照片下)。
你会做那样的事吗?我是否需要先生成一个Silverlight页面?答案 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");
}
希望这有帮助!