Option Explicit
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 Declare Function GetWindowDC Lib "user32" ( _
     ByVal hwnd As Long) As LongPrivate Sub Command1_Click()
Dim hDC As LonghDC = GetWindowDC(Me.hwnd) '这样的hDC可以得到标题栏
StretchBlt Picture1.hDC, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, hDC, 0, 0, Me.Width, Me.Height, vbSrcCopy
End Sub

解决方案 »

  1.   

    UP 如果你还是不行,我就要向你推荐一个笨的方法了,
    你可以做两个窗体吗?一个有picture 吗??
    一定要用动态的吗?速度不一定哦!
      

  2.   

    屏幕外 无法解决!
    那是受Windows对窗体的绘制方式的限制
    Windows系统实际上是把所有显示的窗体的内容放在一个位图中
    GetDC、GetDCEx、GetWindowDC只不过是把坐标位置映射一下,再设置剪裁区域,等窗体需要更新时
    就会设置窗体的绘制区域(就是把在它上面的窗体的区域屏蔽掉)
    在发送WM_PAINT、WM_NCPAINT消息让程序去绘制
      

  3.   

    bitblt form1.hdc,0,0,form1.width,form2.height,picture1,0,0,,,srccopy
    这样应该没问题的吧!!!
      

  4.   

    搞错了!bitblt form1.hdc,0,0,form1.width,form1.height,picture1.hdc,0,0,,,srccopy
    这样应该没问题的吧!!!