在.NET中使用自定义边距进行打印

我使用vb.Net和标准的.NET打印例程通过Dymo打印机打印标签,我的应用程序必须支持任何类型的标签打印机.因为dymo驱动程序在控制面板中没有可访问的边距,并且控制面板对我的大多数用户都是限制的,所以我使用应用程序设置页边距.

我使用应用程序中设置的边距替换PrintDocument中的边距,这很好,但我也有一些代码用于根据可打印区域的宽度计算文本大小和格式.我永远无法让可打印区域改变大小?所有边距设置都是基于顶部和左边距向下和向右分流整个图形,图形对象中的可打印区域和VisibleClipBounds永远不会改变?当发生这种情况时,文本只会从页面的右下角流出,因此它根本不会遵循右边距和下边距.

这是正常的行为吗?我是否必须在应用程序中进行更多处理以根据我的边距和初始页面大小自行计算可打印区域?

'Code to setup PrintDocument
    MyDocument.DefaultPageSettings.Margins = New Margins(Printers.LabelPrinter.MarginLeft / 0.254,Printers.LabelPrinter.MarginRight / 0.254,Printers.LabelPrinter.MarginTop / 0.254,Printers.LabelPrinter.MarginBottom / 0.254)
    MyDocument.OriginAtMargins = True


'Code that runs during the MyDocument.Print event
    width = e.Graphics.VisibleClipBounds.Width
    height = e.Graphics.VisibleClipBounds.Height
    'Calculate best fit text size here and update graphics object

解决了它.我的例程只是使用Graphics对象,而不是Print事件的完整eventargs.

print事件包含MarginBounds属性,该属性在应用边距后返回一个大小的矩形,因此工作正常.

解决方法

解决了它.我的例程只是使用Graphics对象,而不是Print事件的完整eventargs.

print事件包含MarginBounds属性,因此工作正常.

(添加此作为答案,因为当时没有足够的信誉来做这个,并希望这将帮助那些看到这个问题的人没有答案).

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...