2009-02-05 13 views
6

walczę, aby mój formularz, aby mieć przezroczyste tło w VB.NETJak mogę ustawić formę mieć przezroczyste tło

Obecnie w postaci New ja ustawiony

Me.SetStyle(ControlStyles.SupportsTransparentBackColor, true) 

ale nadal Formularz pojawia się jako domyślne szare tło. Czy ktoś może pomóc?

EDIT: Muszę formantów na formularzu być widoczne więc nie sądzę, ustawiając krycie 0 zadziała

EDIT: Próbowałem rozwiązanie klucza przezroczystości, ale to nie działa. Mam okrągły obraz z czarnym tłem. OnPaint Ustawiłem klucz przezroczystości na piksel img na 0,0, to pozostawia mi obraz okrągły (który chcę). Ukrywa czarne tło, ale wciąż pozostaję z domyślnym szarym prostokątem formularza.

poniżej kod mam -

Public Sub New() 

    Me.SetStyle(ControlStyles.SupportsTransparentBackColor, True) 
    Me.BackColor = Color.Transparent 
    ' This call is required by the Windows Form Designer. 
    InitializeComponent() 

    ' Add any initialization after the InitializeComponent() call. 
    Me.Timer1.Start() 
End Sub 

Private Sub frmWoll_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint 

    Dim img As Bitmap = CType(Me.BackgroundImage, Bitmap) 

    img.MakeTransparent(img.GetPixel(2, 2)) 
    Me.TransparencyKey = img.GetPixel(2, 2) 
End Sub 
+0

Dodałem poniższy kod, aby uzyskać dokładnie to, czego szukasz. Jeśli potrzebujesz czegoś więcej, wyślij komentarz, a ja zaktualizuję ten sam –

Odpowiedz

11

Zastosowanie TransparencyKey dla przejrzystej formie.

np.

TransparencyKey = Color.Red 
Button1.BackColor = Color.Red 

Teraz uruchom formularz, w którym przycisk 1 ma otwór.

Więc za pomocą tej metody można stworzyć obraz maski w farbie, dla których część musi być przejrzysty i zastosować ten obraz do tworzenia i voila forma jest teraz przejrzyste.

Edit: Przepraszamy za opóźnienie w odpowiedzi.

Poniżej kod zmodyfikowany tak, aby dopasować swoje wymagania

Public Sub New() 

    Me.SetStyle(ControlStyles.SupportsTransparentBackColor, True) 
    Me.BackColor = Color.Transparent 

    ' This call is required by the Windows Form Designer. 
    InitializeComponent() 
    ' Add any initialization after the InitializeComponent() call. 
    Dim img As Bitmap = CType(Me.BackgroundImage, Bitmap) 

    'img.MakeTransparent(img.GetPixel(2, 2)) 
    Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None 
    Me.TransparencyKey = img.GetPixel(2, 2) 
End Sub 
+0

Chociaż może to być stary post, najwyższy wynik w Google. Skrócony przykład, który może działać dla niektórych osób, to po prostu 'TransparencyKey = Me.BackColor' .. Ale upewnij się, że backcolor formularzy nie jest na obrazie, którego używasz lub jakimkolwiek innym formanty w formularzu. Nadal ustaw backcolor formularza, aby uzyskać unikatowy kolor – Mayhem

-2
Me.Opacity = 0 

Ostrzegamy, że:

  1. To jest dla całej postaci, a nie tylko jako tło. Istnieją pewne komplikacje, które sprawiają, że niektóre części są bardziej opagą.
  2. To tylko przezroczysta folia, która zajmuje migawkę tego, co się za nią kryje. Jest wystarczająco inteligentny, aby wiedzieć, kiedy przesuwasz formularz, ale nie wtedy, gdy przenosisz inne przezroczyste obiekty na wierzchu formularza.
+0

. Spowoduje to również ukrycie wszystkich elementów kontrolnych w formularzu. – Ahmad

1

Istnieje kilka metod można użyć.

  • użyć formy TransparencyKey
  • Zastąp OnPaintBackground (WM_ERASEBKGND)
  • Zastąp WndProc i obsługi wiadomości Paint (WM_NCPAINT, WM_PAINT itp)

Polecam przesłanianie procedurę okna, aby uzyskać optymalne wyniki.

2

Ustaw właściwość Kolor przezroczystości kształtu formularza tak samo, jak właściwość koloru tła formularza