2013-11-22 170 views
3

我正在使用網絡瀏覽器從網絡中自動加載圖像,但VB.Net窗體應用程序中存在白色背景,圖像未填充窗體上的整個導航器對象。如何在VB.Net中爲WebBrowser設置透明背景顏色?

如何在應用程序中爲Web瀏覽器對象設置透明背景?

感謝,
C.

+0

你只使用webbrowser的圖像? – K3rnel31

+0

是的。但是它們總是從網頁加載(隨着圖像的變化),然後它會在網頁上顯示第一個(也是唯一的)圖像。 – Masutatsu

回答

3

設置窗體的透明度鍵爲白色。 您選擇的透明度鍵的顏色是透明的。整個表單上的任何內容都會變成透明的。由於瀏覽器的背景是白色,透明的白色按鍵會使其透明,您可以使用Windows Aero Glass DWM效果獲得透明的透明效果,但只能在Windows Vista之後使用,對於以前版本的Windows,您將擁有手動繪製它是一項長期的工作。最簡單和最適合你的最快的就是透明度鍵設置爲白色:)

Me.TransparencyKey = Color.White 

enter image description here

You can set the TransparencyKey in the form's properties

如果你想使用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 

我用這個代碼在一個應用程序,我創建 enter image description here

+0

5個單詞的答案?!?!自WebBrowser控件以來窗體上的屬性沒有該屬性?或者你是什麼意思? –

+0

那麼,你選擇透明度的顏色是透明的。整個表單上的任何內容都會變成透明的。所以瀏覽器的背景是白色的,所以透明的白色按鍵會使它透明,你可以使用Windows Aero Glass dwm效果來獲得透明的效果,但它只能在Windows Vista之後使用,對於以前的Windows版本,你會必須手動繪製它有點長。對你而言,最簡單也是最快捷的事情就是透明鍵:) –

+0

我知道(以及我認爲你的意思)...更重要的是,我暗示你應該通過複製/粘貼你的評論到你的答案... 5個單詞的答案沒有得到upvotes,包含詳細/格式化/例子和適當的一級裁判獲得upvoted的長答案。 –