Hello!
I just found a code snippet that is capable of getting control image even when the control is invisible or overlapped by others![]()
So forget about BitBlt problems![]()
Code:Private Function GetControlBitmap(ByVal CTL As Control) As Bitmap Dim Methods() As System.Reflection.MethodInfo = ctl.GetType.GetMethods( _ System.Reflection.BindingFlags.Instance Or _ System.Reflection.BindingFlags.NonPublic) Dim i As Integer Dim OnPaintMethod As System.Reflection.MethodInfo For i = 0 To Methods.Length - 1 If Methods(i).Name = "OnPaint" Then OnPaintMethod = Methods(i) Exit For End If Next If Not OnPaintMethod Is Nothing Then Dim _BMP As New Bitmap(CTL.Width, CTL.Height) Dim _Gr As Graphics = Graphics.FromImage(_BMP) Dim PaintEventArgs As New System.Windows.Forms.PaintEventArgs(_Gr, _ New Rectangle(0, 0, CTL.Width, CTL.Height)) OnPaintMethod.Invoke(ctl, New Object() {PaintEventArgs}) _Gr.Dispose() Return _BMP End If End Function
Originally posted in MS VB.NET newsgroup by Craig Vick![]()




Reply With Quote