我知道很难。而且还要求能打出picturebox(包括其上动态添加的usercontrol)的任意一部分,都是要求放缩到刚好一张A4的纸。幸好纸的尺寸是固定的,稍微简单一点。

解决方案 »

  1.   

    用你的PICTURE的尺寸可以算出和A4的比例,用FOR把所有控件按比例缩小,我想这个比较简单,给分啊!
      

  2.   

    Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal 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
    Private Const SRCCOPY = &HCC0020
    Private Const SRCAND = &H8800C6
    Private Const SRCPAINT = &HEE0086
    Private Const SRCINVERT = &H660046
    Private Const SRCERASE = &H440328
    Private Const NOTSRCERASE = &H1100A6
    Private Const NOTSRCCOPY = &H330008
    Private Const PATPAINT = &HFB0A09
    Private Const PATINVERT = &H5A0049
    Private Const PATCOPY = &HF00021
    Private Const MERGEPAINT = &HBB0226
    Private Const MERGECOPY = &HC000CA
    Private Const DSTINVERT = &H550009Private Sub ZoomDraw(ByVal hDestDC As Long, ByVal Width As Long, ByVal Height As Long, hSrcDC As Long, Optional ByVal dblZoom As Double = 1)
        Dim lReturn As Long
        lReturn = StretchBlt(hDestDC, 0, 0, Width * dblZoom, Height * dblZoom, hSrcDC, 0, 0, Width, Height, SRCCOPY)
    End Sub可以缩放图片
      

  3.   

    直接用PRINTER的ZOOM不可以吗?你是怎样打印的?
      

  4.   

    这个我用了,不行。我的这个picturebox 是放在usercontrol中,为了滚屏,放在了另一个picturebox 中,这个控件在运行时又动态添加了许多别的usercontrol,这些控件在有背景图案的picturebox中可以用鼠标移动,效果很好。但是打印的时候就出问题了。要求是可以以A4为基准打出picturebox上的以一部分(包括其上控件,当然也只是要求打得部分)。现在我的程序很奇怪,`使用paintpicture更本不放发生缩放,而且这种方法也太麻烦,必须要抓出picturebox的一部分缩放,还要计算每个控件,不只是缩放,还要确定哪些该打。最理想的方法就是一次抓出整个picturebox及其上控件的图像,然后整体剪裁,缩放。不知可不可以做到。我用getdc作,要嘛只能抓出可见部分的完整图。要嘛只能抓出整个的背景图,控件全丢了。我的功力太差,请那位高手来指点一下。我很想实现这个强大的功能。
      

  5.   

    谢谢。我现在就在尝试分块的方法。我在试验取出每一块,然后放到pictureclip的每一块上(pictureclip是A4大小),但现在只要使用pictureclip之后,屏幕就花了。
      

  6.   

    pictureclip ,u mean pictureclip control?
    屏幕就花了??
      

  7.   

    是呀。我放了一个pictureclip control,然后把picturebox的image放进去
    ,缩小到是很成功,就是放完以后,我的pictuerbox 一滚屏屏幕就花了,或者一移动控件,控件移动轨迹都清不掉了。
      

  8.   

    up向高手求救,答者有分啦!
    http://www.csdn.net/expert/topic/958/958179.xml?temp=.5860865