前几天我从网上找一个可以把截取屏幕界面到PictureBox的源代码,但我去不知如何把它保存为Jpg 或Bmp文件,曾经试过用"SavePicture Picture1.Picture"但也没用,因为可能是Picture1.Picture里面是为空的.所以无法保存.请各路高手指点迷津,在下感激不已!!!  
(附源代码如下) Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long 
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 Sub Command1_Click() 
Dim wScreen As Long 
Dim hScreen As Long 
Dim w As Long 
Dim h As Long 
Dim pic As PictureBox 
Picture1.Cls 
wScreen = Screen.Width \ Screen.TwipsPerPixelX 
hScreen = Screen.Height \ Screen.TwipsPerPixelY 
Picture1.ScaleMode = vbPixels 
w = Picture1.ScaleWidth 
h = Picture1.ScaleHeight 
hdcScreen = GetDC(0) 
p = StretchBlt(Picture1.hdc, 0, 0, w, h, hdcScreen, 0, 0, wScreen, hScreen, vbSrcCopy) 
End Sub 

解决方案 »

  1.   

    Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    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 Sub Command1_Click()
    Dim wScreen As Long
    Dim hScreen As Long
    Dim w As Long
    Dim h As Long
    Dim pic As PictureBox
    Picture1.Cls
    Picture1.AutoRedraw = True
    wScreen = Screen.Width \ Screen.TwipsPerPixelX
    hScreen = Screen.Height \ Screen.TwipsPerPixelY
    Picture1.ScaleMode = vbPixels
    w = Picture1.ScaleWidth
    h = Picture1.ScaleHeight
    hdcScreen = GetDC(0)
    p = StretchBlt(Picture1.hdc, 0, 0, w, h, hdcScreen, 0, 0, wScreen, hScreen, vbSrcCopy)
    Picture1.RefreshEnd SubPrivate Sub Command2_Click()
    SavePicture Picture1.Image, "c:\111.bmp"
    End Sub
      

  2.   

    没遇到过你这样的问题,我用SAVEPICTURE PICTURE,路径+文件名
    都可以保存啊!
    除非你的picture那个参数是空的!但正常情况下,PICTURE1。PICTURE只要获得对象就不可能为空啊!
      

  3.   

    主要是加上Picture1.AutoRedraw = True