C#visual(控件)的打印

本文介绍了C#中使用PrintDialog::PrintVisual和转换为XPS Document进行打印的方法,以及解决打印超出页面问题的缩放比例调整技巧。由于示例代码存在异常,无法直接执行,文中提供了相应调整建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法有下面几种

1, 使用PrintDialog::PrintVisual

        public bool PrintVisual(FrameworkElement source)
        {
            PrintDialog printDlg = new System.Windows.Controls.PrintDialog();

           if (printDlg.ShowDialog() == true)
           {
               printDlg.PrintVisual(source, "PrintVisual");
               return true;
           }

            return false;
        }

2,  转成Bitmap图,再打印

            double width = source.ActualWidth;
            double height = source.ActualHeight;

            RenderTargetBitmap renderTarget = new RenderTargetBitmap(
                (int)width, (int)height, 96, 96, PixelFormats.Default);
            renderTarget.Render(source);

            // BitmapSourceをBitmapに転換
            System.Drawing.Bitmap bitmap;
            MemoryStream outStream = new MemoryStream();
            BitmapEncoder pngEncoder = new PngBitmapEncoder();
            pngEncoder.Frames.Add(BitmapFrame.Create(renderTarget));
            pngEncoder.Save(outStream);
            bitmap = new System.Drawing.Bitmap(outStream);
            printBridge.print(bitmap);

补充说明,转成位图的格式,这里用了png格式,原因是当控件的背景色是透明(transparent)时,jpg和map格式图像背景色都变成了黑色。。

printBridge的print的实现如下:

int Hp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值