利用BitBlt画的图,如何重画?
用BitBlt在PictureBox上画图成功,但如果把PictureBox前面挡住的窗口移走后,PictureBox被挡住部分没有更新,请问应该如何刷新呢?用OnPaint事件也不行。
Public Class Form1
Declare Auto Function BitBlt Lib "GDI32.DLL" ( _
ByVal hdcDest As IntPtr, _
ByVal nXDest As Integer, _
ByVal nYDest As Integer, _
ByVal nWidth As Integer, _
ByVal nHeight As Integer, _
ByVal hdcSrc As IntPtr, _
ByVal nXSrc As Integer, _
ByVal nYSrc As Integer, _
ByVal dwRop As Int32) As Boolean
Private Const ROP_SrcCopy As Integer = &HCC0020
Private Declare Function SelectObject Lib "GDI32" (ByVal hDC As Integer, ByVal hObject As Integer) As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TestBitBlt()
End Sub
Private Sub PictureBox1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
End Sub
Private Sub TestBitBlt()
Dim bmp As Bitmap = Image.FromFile("C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\Sunset.jpg")
Dim g1 As Graphics = Graphics.FromImage(bmp)
Dim g2 As Graphics = Me.PictureBox1.CreateGraphics
Dim hdc1 As IntPtr = g1.GetHdc
Dim hdc2 As IntPtr = g2.GetHdc
SelectObject(hdc1, bmp.GetHbitmap()) '
BitBlt(hdc2, 0, 0, bmp.Width, bmp.Height, hdc1, 0, 0, ROP_SrcCopy)
g1.ReleaseHdc()
g2.ReleaseHdc()
g1.Dispose()
g2.Dispose()
End Sub
End Class