我在这里的第一篇文章,所以这里是,
我有一个程序,我需要获取面板中像素的颜色,该面板包含一个 IE 浏览器,如下面的代码所示(我不能使用 webBrowser,因为它不会加载与 IE/Firefox 相同的某些网页(通常是java))
Dim TheBrowser = New SHDocVw.InternetExplorer
asd = TheBrowser.HWND
fgh = Me.Panel2.Handle
SetParent(asd, fgh)
SendMessage(asd, WM_SYSCOMMAND, SC_MAXIMIZE, 0)
这个位工作正常,但是用户可以更改整个表单的不透明度,以便获得像素颜色,我发现如果我在表单上使用 DrawtoBitmap 它会忽略不透明度,所以我可以使用它来获取像素颜色,但是 drawtobitmap 是将面板的内容留空(我使用图片框来测试图像)
Dim mybitmap As New Bitmap(Me.Width, Me.Height)
Me.DrawToBitmap(mybitmap, Me.ClientRectangle)
PictureBox1.BackgroundImage = mybitmap
表单及其所有按钮等在图片框上显示良好,但面板为空白(我都试图将面板转换为位图,但结果完全空白)。我是否将 IE 错误地链接到面板,或者只是 DrawtoPanel 无法正常工作?(我尝试使用 Printscreen,但正如预期的那样,它包括不透明度)。继承人我的 Sendmessage 和 Setparent 只是为了完整性。
<DllImport("user32.dll")> _
Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
End Function
<DllImport("user32.dll")> _
Public Shared Function SetParent(ByVal HWNDChild As IntPtr, ByVal HWNDNewParent As IntPtr) As IntPtr
End Function
任何帮助将不胜感激,谢谢瑞恩