以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  【二维码】怎么按照我设定的缩放比例进行二维码图片列的打印呢?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=109478)

--  作者:李孝春
--  发布时间:2017/11/13 13:34:00
--  【二维码】怎么按照我设定的缩放比例进行二维码图片列的打印呢?
怎么按照我设定的缩放比例进行二维码图片列的打印呢?

当前代码如下:
If Tables("卷宗入库").Current IsNot Nothing Then
    Dim CurRow As Row = Tables("卷宗入库").Current
    Dim drs1 = DataTables("款物明细").Select("案件编号 = \'" & currow("卷宗编号") & "\'")
    Dim doc As New PrintDoc
    Dim rg As prt.RenderGraphics
    Dim rm As New prt.RenderImage \'定义一个图片对象
    Dim dr As Row=Tables("打印机").Current
    doc.PageSetting.Width = val(dr("设置宽度"))
    doc.PageSetting.Height = val(dr("设置高度") )
    doc.PageSetting.LeftMargin=val(dr("左边距") )
    doc.PageSetting.RightMargin=val(dr("右边距") )
    doc.PageSetting.TopMargin=val(dr("上边距") )
    doc.PageSetting.BottomMargin=val(dr("下边距") )
    Doc.PrinterName = dr("打印机名称")
    doc.AutoRotate = dr("是否旋转")
    doc.PageSetting.Landscape=dr("是否横向")
    Doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
    For i As Integer = 0 To drs1.count-1
        Dim r = drs1(i)
        rm = new  prt.RenderImage
        rm.Width = "Parent.Width" \'宽度等于页面宽度    ‘指定高度和宽度结果打印的图片都不如原来按照缩放比例进行打印的清晰和快速识别率’
        rm.Height = "Auto" \'高度由图片大小自动决定
        rm.Image = GetImage( r("二维码")) \'设置图片
        rm.Style.ImageAlign.StretchHorz = True \'禁止图片水平拉伸
        rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center \'居中显示
        rm.Style.ImageAlign.KeepAspectRatio=True
        rm.Style.Borders.All = New prt.Linedef(1, Color.Red) \'设置边框
        doc.Body.Children.Add(rm) \'将图片对象加入报
    Next
    Doc.Preview() \'预览
End If


原来的部分代码如下:因为是代码直接生成了二维码 ,现在是改写了另外的方式,怎么实现按预先设定的缩放比例来进行打印呢?
    Dim rg As prt.RenderGraphics
    Dim Bar As New BarCodeBuilder
    Dim dr As Row=Tables("打印机").Current
    doc.PageSetting.Width = val(dr("设置宽度"))
    doc.PageSetting.Height = val(dr("设置高度") )
    doc.PageSetting.LeftMargin=val(dr("左边距") )
    doc.PageSetting.RightMargin=val(dr("右边距") )
    doc.PageSetting.TopMargin=val(dr("上边距") )
    doc.PageSetting.BottomMargin=val(dr("下边距") )
    Doc.PrinterName = dr("打印机名称")
    \'Dim xz As String = dr("是否旋转")
    doc.AutoRotate = dr("是否旋转")
    doc.PageSetting.Landscape=dr("是否横向")
    Bar.Symbology = Barpro.Symbology.QRCode
    Doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
    For Each r As Row In Tables("入库明细").Rows
        bar.Text=r("分册编号") & "册"
        bar.Code = r("加密字符")
        rg = new prt.RenderGraphics
        bar.DrawOnCanvas(rg.Graphics,0,0, val(dr("缩放比例") ))
        rg.Style.Spacing.All = 1
        Doc.Body.Children.Add(rg)

--  作者:有点甜
--  发布时间:2017/11/13 15:01:00
--  

看不懂你要做什么,大概这个意思

 

Dim doc As New PrintDoc
Dim rg As prt.RenderGraphics
Dim Bar As New BarCodeBuilder
Bar.Symbology = Barpro.Symbology.QRCode
Doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight

Dim bl = (doc.PageSetting.Width.value-doc.PageSetting.LeftMargin.value-doc.PageSetting.RightMargin.value) / 25.4 * 96 / 103
msgbox(bl)
For Each r As Row In Tables("表A").Rows
    bar.Code = r("第一列")
    rg = new prt.RenderGraphics
    bar.DrawOnCanvas(rg.Graphics,0,0,bl)
    rg.Style.BackColor = color.red
    Doc.Body.Children.Add(rg)
Next

Doc.Preview()

 


--  作者:李孝春
--  发布时间:2017/11/13 15:59:00
--  回复:(有点甜)看不懂你要做什么,大概这个意思&n...
有点甜老师  麻烦修正第一段代码  第一段代码的内容是已经生成了二维码  现在我要实现二维码打印的时候按照我预设的缩放比例来进行打印
 指定image的宽度和高度打印出来的都是很模糊的

不需要再次生成二维码了 谢谢!

--  作者:有点甜
--  发布时间:2017/11/13 17:38:00
--  

1、存放图片的时候,你要存放为wmf的格式,不然拉伸、缩放的时候,会变模糊;

 

2、尝试测试代码

 

Dim doc As New PrintDoc() \'定义一个报表
doc.PageSetting.Width = 215 \'纸张宽度为215毫米
doc.PageSetting.Height = 280 \'纸张高度为280毫米

Dim rg1 As New prt.RenderGraphics()
Dim g= rg1.Graphics
Dim image = getimage("d:\\test.wmf")

g.InterpolationMode = InterpolationMode.HighQualityBicubic
g.SmoothingMode = SmoothingMode.HighQuality
g.CompositingQuality = CompositingQuality.HighQuality
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor
g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.Half

Dim bl = (doc.PageSetting.Width.value-doc.PageSetting.LeftMargin.value-doc.PageSetting.RightMargin.value) / 25.4 * 96  / image.width
g.DrawImage(image,0,0,cint(image.width*bl), cint(image.height*bl))
doc.Body.Children.Add(rg1) \'将图片对象加入报表
Doc.Preview() \'预览