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
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
你可以做两个窗体吗?一个有picture 吗??
一定要用动态的吗?速度不一定哦!
那是受Windows对窗体的绘制方式的限制
Windows系统实际上是把所有显示的窗体的内容放在一个位图中
GetDC、GetDCEx、GetWindowDC只不过是把坐标位置映射一下,再设置剪裁区域,等窗体需要更新时
就会设置窗体的绘制区域(就是把在它上面的窗体的区域屏蔽掉)
在发送WM_PAINT、WM_NCPAINT消息让程序去绘制
这样应该没问题的吧!!!
这样应该没问题的吧!!!