2024年4月12日发(作者:)

VB中使用Picture控件实现打印预览

2007-09-26 21:48:46| 分类: Visual Basic | 标签: |字号大中小 订阅

一、 VB中为打印预览的缩放所做的准备

要做打印预览缩放首先:

1. 新建一个窗体,并且把AutoRedraw属性设为True,因为预览中放大的

预览窗体将超出父窗口,在使用滚动条时需要保证遮去(擦去)的文字和图像重画。

2. 在预览窗体的属性窗口中Borderstyle属性设为0-None,BackColor属

性为白色。再给它做窗体边框,把DrawWidth=6,ForeColor=@H0(黑色),用Line方

法画右边框和底边框这是做预览窗体的阴影。设置DrawWidth=3,

ForeColor=&HFF0000(蓝色),再用Line方法画窗体四周边框,使预览窗体象一张带阴影

的白色纸张。

3.关于窗体宽、高与纸张实际宽、高的比例转换。例如使用A4复印纸,宽210cm,

高295cm,那么窗体上坐标比例用idth/210,eight/295

反之在实际纸张上比例用210/ idth,295/ eight这

样使预览窗体与实际纸张之间的完全吻合。注意如果窗体的ScaleMode=2(磅),那么实际

打印最好用ScaleMode=6(毫米)。下面将讲到如何在预览和实际打印之间参数的传递。

二、VB中处理文字的预览和缩放

预览用到窗体打印,例如:

= / 2

= / 2

w1 = idth / 210(比例)

h1 = eight / 295(比例)

tX = 500

tY = 200

"软件"

这时坐标位置转换到小窗体上的比例,但是字体大小必需也要相应缩小,用

FontSize设置相应小字号,这样才真正做到文字预览的缩放。如果要预览放大只要窗体的

Height和Width乘上相应倍数,并把FontSize设置成相应大字号。

三、 VB中处理图像的预览缩放

图像的预览缩放将调用API函数。用StretchBlt,使用方法:

StretchBlt hDestDC,x,y,nWidth,nHeight,hSrcDc,xSrc,ySrc,nSrcWidth,nSrcHeight,d

wRop

nSrcWidth和nSrcHeight表示在源图片中所要复制部分的宽和高。nWidth和

nHeight表示在目标图片中的宽和高,源和目标的宽、高都需要指定,当目标图片的宽和

高与源图片的宽和高不等时,就形成了缩放。

如果要做图像缩放,将如下代码放入窗体的“通用”|“声明”中:

Option Explicit

Const SRCCOPY=&HCC0020

Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long,

ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, By

Val nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long

, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight

As Long, ByVal dwRop As Long) As Long

Dim Dst as long,Src as long

Dim p1w as Integer,p1h as Integer

窗体的Form_Load中加入:

Dst =proview_

Src =proview_

P1w =proview_idth

P1h = proview_eight

然后调用:

StretchBlt Dst,0,0,p1w/2,p1h/2,Src,0,0,p1w,p1h,SRCCOPY

其中Dst和Src分别表示目标设备描述表句柄和源设备描述表句柄。目标Dst后面的

0,0表示要显示图像的位置,p1w/2,p1h/2表示目标图像缩小为源图的1/2。