VS.NET打印页面设置(PageSetupDialog)页边距总是改变

问题:

初始设置的值得单位是百分之一英寸,    在出现的页面设置对话框中,页边距部分显示的单位是“页边距(毫米)”,可是实际显示在“左、右、上、下”后面的文本框中数字似乎是初始值的十分之一,而不是以“毫米”为单位数值。

当你什么也没改动就按下“确定”键时,PageSetting 中的边距值(百分之一英寸) 与页面上的值(毫米)是相等的


感觉问题在,初始值向页面值得转换单位不一致,页面上的值转换成(百分之一英寸)是正确的;


根本原因:

我之前也查了很多资料,有的人说肯定一个bug,有人说不行,也有人说调用API,也有人说自己写。。。
但是有一点我受到的启发是一个是公制单位一个是美国单位,所以你首先要检查 
  (Window中区域选项/自定义/数字/度量衡 中有公制和美国)。
很明显,楼主使用的是公制,第一楼使用的是美制。
  使用公制单位时要转换,请使用PrinterUnitConvert.Convert(mg, PrinterUnit.Display, PrinterUnit.TenthsOfAMillimeter);


可以简单的认为,Dialog认为初始值得单位是十分之一毫米,但是我们设置的初始值是百分之一英寸,

PrintDocument myDoc = new PrintDocument();


           PageSetupDialog dia = new PageSetupDialog();
            dia.PageSettings = (PageSettings)myDoc.DefaultPageSettings.Clone();
            dia.PageSettings.Margins = PrinterUnitConvert.Convert(dia.PageSettings.Margins, PrinterUnit.Display, PrinterUnit.TenthsOfAMillimeter);

            dia.AllowMargins = true;
            dia.AllowPaper = true;
            dia.AllowPrinter = true;
        
            if (dia.ShowDialog() == DialogResult.OK)
            {
                myDoc.DefaultPageSettings = dia.PageSettings;
            }




  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在VB.NET中,可以使用PrintDocument类来打印绘制的图形。 首先,你需要创建一个PrintDocument对象,并为其绑定PrintPage事件。在PrintPage事件的处理程序中,你可以编写打印图形的代码。 下面是一个简单的示例代码: ```vb Imports System.Drawing.Printing Public Class MainForm Private WithEvents printDocument As New PrintDocument Private Sub MainForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' 设置打印文档的页面设置 Dim pageSetupDialog As New PageSetupDialog() pageSetupDialog.Document = printDocument pageSetupDialog.ShowDialog() End Sub Private Sub PrintButton_Click(sender As Object, e As EventArgs) Handles PrintButton.Click ' 打开打印对话框以选择打印机和设置 Dim printDialog As New PrintDialog() printDialog.Document = printDocument If printDialog.ShowDialog() = DialogResult.OK Then ' 调用Print方法开始打印 printDocument.Print() End If End Sub Private Sub printDocument_PrintPage(sender As Object, e As PrintPageEventArgs) Handles printDocument.PrintPage ' 在打印上绘制图形 Dim graphics As Graphics = e.Graphics Dim brush As New SolidBrush(Color.Black) Dim pen As New Pen(Color.Black) graphics.DrawEllipse(pen, 100, 100, 200, 200) graphics.FillEllipse(brush, 100, 100, 200, 200) End Sub End Class ``` 在上面的代码中,当用户点击"Print"按钮时,会打开打印对话框,用户可以选择打印机和设置。然后,通过调用Print方法开始打印,PrintPage事件将在需要打印的每个面上触发。 在PrintPage事件的处理程序中,我们可以使用Graphics对象来绘制图形。在上面的示例中,我们绘制了一个填充的圆形。 请注意,在PrintPage事件中,你可以使用Graphics对象绘制任意的图形,包括线条、矩形、多边形等。你可以使用不同的画刷(如SolidBrush、HatchBrush等)和画笔(如Pen)来设置图形的颜色和样式。 当然,在实际中,你可能需要根据实际需求来计算和确定要绘制的图形的位置和大小。 希望这个简单的示例代码可以帮助你理解如何使用PrintDocument类来打印绘制的图形。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值