我在picturebox中间画了点线(line),加了点label控件,然后用printer.PaintPicture picture1.picuter......来打印,提示说是无效的图片.
如果想打印picturebox中画的线和label应该怎么打,谢谢

解决方案 »

  1.   

    vb的printer对象给你提供一个缓冲区,在缓冲区中自己画吧!printer对象是一个与设备无关的图片空间,可接受print方法和图形方法的输出,但不能把控件直接放在print对象中。如果需要打印控件,必须编写过程来调用pringer对象要用到的每种控件,或使用printform方法。
      

  2.   

    Option ExplicitDim m_lngXDown As Long, m_lngYDown As Long
    Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC 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 dwRop As Long) As Long
    Private Const SRCCOPY = &HCC0020 ' (DWORD) dest = source'Picture1为源图形,PICTURE2为目的图形
    Private Sub Command1_Click()
        Picture2.Width = Picture1.Width: Picture2.Height = Picture1.Height
        BitBlt Picture2.hDC, 0, 0, Picture1.Width, Picture1.Height, Picture1.hDC, 0, 0, SRCCOPY
        Printer.PaintPicture Picture2.Image, 0, 0
    End SubPrivate Sub Form_Load()
        Picture2.AutoRedraw = True
    End Sub