wpf后台生成图形并打印--

only_youlix 2016-01-19 05:33:52
需要点一个打印按钮然后在后台生成一个stackpanel 并直接打印 。应该怎么弄呢

private void btnprint_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
StackPanel sp= print("123456"); //生成图形

System.Windows.Controls.PrintDialog dialog = new System.Windows.Controls.PrintDialog();//开始打印
var printers = new LocalPrintServer().GetPrintQueues();

var selectedPrinter = printers.FirstOrDefault(p => p.Name == "打印机");
if (selectedPrinter == null)
{
System.Windows.MessageBox.Show("没有找到打印机");
return;
}
dialog.PrintQueue = selectedPrinter;
dialog.PrintVisual(sp, "Code");
}
...全文
247 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
only_youlix 2016-01-21
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
这不都写出来了么
这个不对啊。 打出来是空的 。不知道是图形还没生成完就打印了还是咋回事。 设置个 arrange 好像是可以了。不过打出来不对。 后来 写在BackgroundWorker里面就可以打印了。不过在 win7上还是打不出来。 win8 和 10上好着
only_youlix 2016-01-21
  • 打赏
  • 举报
回复
引用 3 楼 duanzi_peng 的回复:
[quote=引用 2 楼 only_youlix 的回复:] [quote=引用 1 楼 duanzi_peng 的回复:] 这不都写出来了么
这个不对啊。 打出来是空的 。不知道是图形还没生成完就打印了还是咋回事。 设置个 arrange 好像是可以了。不过打出来不对。 后来 写在BackgroundWorker里面就可以打印了。不过在 win7上还是打不出来。 win8 和 10上好着[/quote] 用Task, 生成图形之后 在执行打印操作。 设置arrange 是对的,因为要重新计算布局,arrange 的第一个参数为rect类型,可以这样设置: Size size = new Size(188, printDialog.PrintableAreaHeight); Arrange(new Rect(new Point(20, 0), size));[/quote] 嗯 设置 size我用的是打印机可打印区域的宽高。打出来不对。我只需要打110mm*10mm的 它怎么样出来都不对 出纸多 而且不切。后来我在页面上放了一个容器 先把生成的图形放在容器里面 然后打印容器。出来的就是对的
exception92 2016-01-21
  • 打赏
  • 举报
回复
引用 2 楼 only_youlix 的回复:
[quote=引用 1 楼 duanzi_peng 的回复:] 这不都写出来了么
这个不对啊。 打出来是空的 。不知道是图形还没生成完就打印了还是咋回事。 设置个 arrange 好像是可以了。不过打出来不对。 后来 写在BackgroundWorker里面就可以打印了。不过在 win7上还是打不出来。 win8 和 10上好着[/quote] 用Task, 生成图形之后 在执行打印操作。 设置arrange 是对的,因为要重新计算布局,arrange 的第一个参数为rect类型,可以这样设置: Size size = new Size(188, printDialog.PrintableAreaHeight); Arrange(new Rect(new Point(20, 0), size));
exception92 2016-01-20
  • 打赏
  • 举报
回复
这不都写出来了么

8,736

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧