我正在使用 Web 浏览器在 VB.Net 表单应用程序中自动从 Web 加载图像,但是,有一个白色背景,图像没有填满表单上的整个导航器对象.
如何为我的应用程序中的 Web 浏览器对象设置透明背景?
谢谢,
C.
最佳答案
将窗体的透明键设置为白色。 您选择作为透明键的颜色被透明化。整个表格上任何具有该颜色的东西都会变成透明的。由于浏览器的背景是白色的,白色的透明键会使其透明,你可以使用 Windows Aero Glass DWM 效果来获得玻璃般的透明效果,但它只适用于 Windows Vista 以上版本,对于以前版本的 Windows,你将拥有手动绘制它是一项很长的工作。对您来说最简单、最快捷的方法是将透明键设置为白色 :)
Me.TransparencyKey = Color.White
如果您想使用 Aero Glass DWM,请使用以下代码:
Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.Runtime.InteropServices
Private mExtendedFrameMargins As MARGINS
Protected Overrides Sub _
OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias
'use either one
e.Graphics.SmoothingMode = SmoothingMode.HighQuality
End Sub
Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
If IsGlassEnabled() Then
'You should paint the extended frame black for proper composition, but I'm painting it white as you need it
e.Graphics.FillRectangle(Brushes.White, 0, 0, Me.ClientRectangle.Width, mExtendedFrameMargins.cyTopHeight)
End If
End Sub
Private Function IsGlassEnabled() As Boolean
If Environment.OSVersion.Version.Major < 6 Then
Return False
End If
Dim isGlassSupported As Boolean = False
DwmIsCompositionEnabled(isGlassSupported)
Return isGlassSupported
End Function
<DllImport("dwmapi.dll")> _
Private Shared Function DwmIsCompositionEnabled(<MarshalAs(UnmanagedType.Bool)> ByRef pfEnabled As Boolean) As Integer
End Function
<DllImport("dwmapi.dll")> _
Private Shared Function DwmExtendFrameIntoClientArea(ByVal hwnd As IntPtr, ByRef pMarInset As MARGINS) As Integer
End Function
<StructLayout(LayoutKind.Sequential)> _
Private Structure MARGINS
Public cxLeftWidth As Integer
Public cxRightWidth As Integer
Public cyTopHeight As Integer
Public cyBottomHeight As Integer
End Structure
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
If IsGlassEnabled() Then
mExtendedFrameMargins = New MARGINS
mExtendedFrameMargins.cyTopHeight = Me.Height 'type height here, this is going to be a number (integer)
DwmExtendFrameIntoClientArea(Me.Handle, mExtendedFrameMargins)
End If
End Sub
我在我正在创建的应用程序中使用了这段代码
关于vb.net - 如何在 VB.Net 中为 WebBrowser 设置透明背景色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20141220/