private sub command1_click()
  Picture1.Print 
endif
如果picture1大于窗口,请将其放置于另一个容器控件内(如picture2)

解决方案 »

  1.   

    对不起,没有那么简单Option Explicit
    Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
    Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As LongPrivate Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As LongPrivate Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As LongPrivate Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As LongPrivate 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 LongPrivate Const SRCCOPY = &HCC0020Private Sub Form_Click() Dim lReturn As Long
     Dim lDC As Long
     Dim lBitmap As Long
     Dim lOldBitmap As Long PicSource.AutoRedraw = False
     PicSource.ScaleMode = 3          'Pixel
     PicPrint.ScaleMode = PicSource.ScaleMode
     PicPrint.Height = PicSource.Height
     PicPrint.Width = PicSource.Width
     PicPrint.Visible = False
     
     
     '创建与PictureBox的设备场景兼容的一内存设备场景
     lDC = CreateCompatibleDC(PicPrint.hdc)
     '创建与PicSource设备场景的CBitmap对象兼容的CBitmap对象
     lBitmap = CreateCompatibleBitmap(PicSource.hdc, PicSource.ScaleWidth, PicSource.ScaleHeight) '将创建的新Cbitmap对象选入内存设备场景,并保存原CBitmap对象。
     lOldBitmap = SelectObject(lDC, lBitmap)
     '将PicSource上显示的图样拷贝到内存设备场景
     lReturn = BitBlt(lDC, 0, 0, PicSource.ScaleWidth, PicSource.ScaleHeight, PicSource.hdc, 0, 0, SRCCOPY)
    '将内存设备场景的图样拷贝到PictureBox的设备场景中
     lReturn = BitBlt(PicPrint.hdc, 0, 0, PicSource.ScaleWidth, PicSource.ScaleHeight, lDC, 0, 0, SRCCOPY)
    '保存PictureBox的图样
     SavePicture PicPrint.Image, "d:\form.bmp"
     
     '======================================================打印Picture
     ' Printer.PaintPicture PicPrint.Image, 20, 20, , , , , , , SRCCOPY ' Printer.EndDoc
     '=====================================================
     
    '将内存设备场景的原CBitmap对象选回内存设备场景
     lBitmap = SelectObject(lDC, lOldBitmap)
    '删除创建的CBitmap对象
     lReturn = DeleteObject(lBitmap)
    '删除内存设备场景
     lReturn = DeleteDC(lDC) End Sub
      

  2.   

    Picture中你还放了啥?Label or Edit
    如果只是文字,完全可以自己写上去,没必要放控件