VB6-系统打印常识

在一次做图片打印的时候,对位置的调整老是不得法,后来通过CBM666老师的帮助才解决问题,分享以下他给的帮助。

‘PaintPicture pic, destX, destY, destWidth, destHeight, scrX, scrY, scrWidth, scrHeight
‘其中Pic:为图片对象, 如图形框Picture等;
‘destX,destY:目标图像位置;
‘destWidth,destHeight:目标图像尺寸;
‘scrX,scrY:原图像的裁剪坐标;
‘scrWidth,scrHeight:原图像的裁剪尺寸;

Printer.PaintPicture picA.Picture, 200, 200, picA.Width / 2, picA.Height / 2
Printer.EndDoc

‘VB 打印图片

Private Sub Command1_Click()
    On Error GoTo Err1
    If Picture1.Picture <> LoadPicture("") Then
        Printer.PaintPicture Picture1.Picture, 200, Picture1.Top + 1000  ‘打印图片
    Else
        MsgBox "没有可打印的图片", 16, "提示"
    End If
    Printer.EndDoc  ‘打印结束
     Exit Sub
Err1:
    MsgBox Err.Description, 16, "提示"  ‘错误处理
End Sub


【属性匹配与窗体缩放】

因为控制打印机实际绘图区域大小的属性Height和Width,由目前正在使用的纸张决定,而且可打印的区域与纸张边缘有一定距离。因而为了获得正确的打印输出结果,不能简单地将Printer对象直接传递给绘图例行程序,还必须要解决打印机的缩放属性与显示窗体属性相匹配的问题。即:保证使窗体中的打印内容以正确的大小显示,并居于可打印区域的中间。实际上实现的是打印机的坐标体系向屏幕坐标体系的转换。具体过程是:使用打印机的ScaleX和ScaleY方法,获取以twip为单位的打印机尺寸,再利用窗体的ScaleX和ScaleY方法将这些尺寸转换为窗体中的坐标系统,从而实现以窗体的坐标系统提供打印机可打印区域大小的目的。然后,用这些尺寸作为打印机中新的ScaleWidth和ScaleHeight,即可实现属性匹配。

但是,我们在打印时,经常会遇到这样的场合——在不改变窗体形状的情况下,需要扩大或缩小窗体的大小。要完成这样的工作,不仅需要完成属性匹配,还要确定对象被缩放的系数。程序如下:



Private Sub SetPrinterScale(obj As Object)
Dim pwid As Single, phgt As Single, xmid As Single, ymid As Single
Dim owid As Single, ohgt As Single
owid = obj.ScaleX(obj.ScaleWidth, obj.ScaleMode, vbTwips)
ohgt = obj.ScaleY(obj.ScaleHeight, obj.ScaleMode, vbTwips)
‘获取窗体以Twips表示的尺寸
pwid = Printer.ScaleX(Printer.ScaleWidth, Printer.ScaleMode, vbTwips)
phgt = Printer.ScaleY(Printer.ScaleHeight, Printer.ScaleMode, vbTwips)
‘获取打印机以Twips表示的尺寸
If (ohgt / owid > phgt / pwid) Then
    s = phgt / ohgt
Else
    s = pwid / owid
End If      ‘‘计算缩放因子
pwid = obj.ScaleX(pwid, vbTwips, obj.ScaleMode) / s
phgt = obj.ScaleY(phgt, vbTwips, obj.ScaleMode) / s
             ‘将打印机的尺寸转换成obj的坐标系统 / 缩放因子
x_mid = obj.ScaleLeft + obj.ScaleWidth / 2
y_mid = obj.ScaleTop + obj.ScaleHeight / 2 ‘设置打印区域的中心点坐标
Printer.Scale (x_mid - pwid / 2, y_mid - phgt / 2)-(x_mid + pwid / 2, y_mid + phgt / 2)
           ‘设置打印机中新的ScaleWidth和ScaleHeight
End Sub

VB6-系统打印常识

时间: 2024-08-10 14:04:00

VB6-系统打印常识的相关文章

windows server系统打印服务配置

系统环境:windows server 2008 R2 Enterprise Service Pack 1 安装内存:8G 系统类型:64位操作系统 目标:在此系统上开启打印服务,可以添加网络打印机 大概思路:windows server 系统默认是没有添加各种服务的,需要自己根据自己的需要进行配置,所以在服务器管理器上添加需要的角色和功能:怎么打开服务器管理器,可以自行百度.本文配置也许不是最优的,需要的话,可以自行实验进行减配. 步骤一:添加角色 依次添加如下角色: 步骤二:添加功能 注意事

Linux系统基本常识

在虚拟机里装一个Linux(centos),有时间可以装个mac玩一下. ifconfig –a 显示当前Linux主机的 ip 地址 如何让虚拟机在后台运行,之前搞定了,现在又搞不定了! 如何切换到root权限:su root 安装基本的软件:gcc,python,perl,R之类的 CentOS更改yum源与更新系统(很慢)

iOS xcode8 运行去掉系统打印的日志

升级到 iOS10后,运行程序,打印台会出现许多乱码七糟的打印日志,在工程配置中可以将其去掉(每个工程都需要添加) 解决方法:Xcode8里边 Edit Scheme... -> Run -> Arguments,(快捷键:shift + command + <) 在Environment Variables里边添加 OS_ACTIVITY_MODE = disable

系统打印信息的查看技巧

1,tail命令 它默认打印后边10行,但是如果你想指定行数,可以: dmesg | tail -n 20 还有一个妙用,它能自动帮你读取文件追加的内容: tail -f /var/log/dmesg 2,dmesg 彩色打印: dmesg --color # or dmesg -L

Citrix XenApp和XenDesktop 打印系统解析①

贾之宽曾经在一篇文章里评论汪峰和许巍的区别时说,汪峰是入世的哲学,也就是儒家哲学,通俗的说就是要拯救世界.而许巍是出世哲学,是道家,讲究无为而治,希望归隐山林什么的.汪峰,许巍,我都喜欢,我更喜欢汪峰,不是因为他更好,而是他更符合我现在的心境.也许以后我会觉得许巍更符合我的心境.但我坚信我们普通的每个人都有这样的倾向,这不是伟人的特权.有的人知足,乐于逍遥:有的人愤青,不平于世. --题外话 我发现写一些WIndows打印的细节你们并不爱看,那我直接写Citrix的打印技术吧! 君子性非异也,善

2.2 为方便储户,某银行拟开发计算机储蓄系统。写出问题定义并分析此系统的可行性

为方便储户,某银行拟开发计算机储蓄系统.储户填写的存款单或取款单由业务员输入系统,如果是存款,系统记录存款人姓名.住址.存款类型.存款日期.利率等信息,并印出存款单给储户:如果是取款,系统计算利息并印出利息清单给储户. 写出问题定义并分析系统的可行性. 答:如果是存款,储户填写存款单,然后交给业务员键入系统,同时系统还要记录存款人姓名.住址(或电话号码).身份证号码.存款类型.存款日期.利率等信息,完成后由系统打印存款单给储户. 如果是取款,储户填写取款单,然后交给业务员,业务员把取款金额输入系

为方便储户,某银行拟开发计算机储蓄系统。储户填写的存款单或取款单由业务员输入系统,如果是存款,系统记录存款人姓名、住址、、存款类型、存款日期、利率等信息,并印出存款单给储户;如果是存款,系统计算利息并印出利息清单给储户。写出问题定义并分析此系统的可行性。

如果是存款,储户填写存款单,然后交给业务员键入系统,同时系统还要记录存款人姓名.住址(或电话号码).身份证号码.存款类型.存款日期.利率等信息,完成后由系统打印存款单给储户. 如果是取款,储户填写取款单,然后交给业务员,业务员把取款金额输入系统并要求储户输入密码以确认身份,核对密码正确无误后系统计算利息并印出利息清单给储户. 为了满足储户的需求,该系统需要迅速的对用户的要求做出反馈,要对用户输入的信息作出最快的处理,所以就需要很大的主存容量,以及强大的数据库支持.由于是所面向的用户是广泛的储蓄用

P53、 2 写出问题定义并分析此系统的可行性

写出问题定义并分析此系统的可行性 为方便储户,某银行拟开发计算机储蓄系统.储户填写的存款单或取款单由业务员输入系统,如果是存款,系统记录存款人姓名.住址.存款类型.存款日期.利率等信息,并印出存款单给储户:如果是取款,系统计算利息并印出利息清单给储户. 答:所谓的问题定义,就是要解决什么问题?该系统从两方面入手. 1)存款,储户填写存款单,然后交给业务员键入系统,同时系统还要记录存款人姓名.住址(或电话号码).身份证号码.存款类型.存款日期.利率等信息,完成后由系统打印存款单给储户. 2)取款,

适配iOS 9系统

问题描述:在iOS9下,系统默认会拦截对http协议接口的访问,因此无法获取http协议接口的数据.对ShareSDK来说,具体表现可能是,无法授权.分享.获取用户信息等. 还可能造成我们的编辑界面里传http之类的网络图片的时候,我们的编辑界面不会显示图片截图,解决的办法或者全面关闭https,允许使用http请求:或者把图片的域添加:又或者选择使用https的图片 解决方案(以下方法2选1): (1).暂时退回到http协议. 具体方法: 在项目的info.plist中添加一个Key:NSA