2023年7月19日发(作者:)
WPF打印控件内容当我们想打印控件内容时,如⼀个Grid中的内容,可以⽤WPF中PrintDialog类的PrintVisual()⽅法来实现界⾯如下:XAML代码如下 1
8
16
PrintDialog pd = new PrintDialog(); if (alog() == true) { isual(1, ""); }这时我们会发现,虽然 打印的内容是指定的,但打印的⼤⼩却是整个窗体的⼤⼩,⽽不仅仅是指定的区域⼤⼩。然后我们就需要⽤到UIElement的Arrange ⽅法MSDN上的解释是定位⼦元素,并确定 的⼤⼩。 ⽗元素从它们的 实现(或者是 WPF 框架级别等效项)调⽤此⽅法,以便形成递归布局更新。此⽅法产⽣第⼆次布局更新。修改后的代码如下:1 if (alog() == true)2 {
3 e(new Rect(new Size(Width, Height)));4 isual(1, "");
5 }这样操作以后,打印的⼤⼩不再是整 个窗体的⼤⼩了,但打印完之后 ,控件 的位置却发⽣了变化 ,这时候我们只需要再调⽤⼀次Arrange⽅法,将它放回原来的位置就⾏了
1 if (alog() == true)2 {
3 Window window = dow(grid1);4 Point point = ormToAncestor(window).Transform(new Point(0, 0));//获取当前控件 的坐标5 e(new Size(Width,Height));6 e(new Rect(new Size(Width, Height)));7 isual(1, "");8 e(new Rect(point.X, point.Y, Width, Height));//设置为原来的位置9 }这样就可以打印控件 内容了。如果 想对打印机进⾏设置,可以查找 WPF PrintDialog的使⽤⽅法,下⾯是简单的设置1 PrintTicket pt = new PrintTicket();2 PageMediaSize p = new PageMediaSize(4);3 //rderless = n;4 diaSize = p;5 //ientation = it;6 icket = pt; 希望能帮助到有需要的⼈。
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689722686a281143.html
评论列表(0条)