如何才能打印PictureBOX控件,包括它上面的line等控件的图形内容?最好能调打印比例。

解决方案 »

  1.   

    先把PictureBOX的内容(包括上面的控件)保存成bmp格式图片文件(以前讨论过,自己搜一下,也可参考:http://www.china-askpro.com/msg2/qa05.shtml),再打印bmp文件假设把内容保存为c:\test.bmp,下面的程序可以实现打印:
    Option Explicit
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPrivate Sub Command1_Click()
        ShellExecute Me.hwnd, "print", "c:\test.bmp", vbNullString, vbNullString, 3
    End Sub
      

  2.   

    1.先打印PICTURE1中的图象,使用PRINTER 的 PaintPicture
    Printer.PaintPicture Picture1.Picture, 0, 0
    2.打印图像框中的控件.
    Private Sub Command1_Click()
            Dim PrnCon As Object
            
            On Error Resume Next
            
            For Each PrnCon In Me.Controls
                If Left$(PrnCon.Name, 3) = "PRN" Then
                    If UCase$(TypeName(PrnCon)) = "LABEL" Or UCase$(TypeName(PrnCon)) = "TEXTBOX" Then
                       ''在PRINTER 中打印LABEL AND TEXTBOX
                    ElseIf UCase$(TypeName(PrnCon)) = "LINE" Then
                       ''打印直线
                    ElseIf UCase$(TypeName(PrnCon)) = "SHAPE" Then
                       ''打印图形
                    End If
                End If
            Next
            Set PrnCon = Nothing
    End Sub3.当然,有更直接的办法,就是---截屏.
    例如,你想打印PICTURE1中的内容.
    程序就不写了,说一下思路,当打印时,将当前屏截下来,放到一个PICTUREBOX中(注.该PICTUREBOX 设置为不可视),然后,根据当前窗体位置和PICTURE1中的位置,将要打印的部分PaintPicture放到别一个PICTUREBOX(即将要打印的区域找到),例如PICTURE3,最后,用 
    Printer.PaintPicture Picture3.Picture, 0, 0
    执行正式打印.
      

  3.   

    2.打印图像框中的控件.中忘记了一句话,就是:将要打印的控件的名称的前三个字母设置为"PRN",例如,一个LABEL是我要打印的,则其名称可以是:"PRNLAB1"