vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Oberfläche · Effekte   |   VB-Versionen: VB2010 - VB201504.09.20
Ein Trick für echte Form-Transparenz

Um eine echte Transparenz einer Form zu zeigen, muss man den hier erklärten Trick anwenden.

Autor:   Dietrich HerrmannBewertung:     [ Jetzt bewerten ]Views:  3.056 
ohne HomepageSystem:  Win7, Win8, Win10, Win11kein Beispielprojekt 

Für eine Form gibt es vorgegebene 2 Möglichkeiten Transparenz anzuwenden:

  1. Dieselbe Farbe für TransParancyKey angeben wie für die BackColor. Dann ist der Hintergrund der Form bei der Anzeige vollkommen ausgeblendet.
  2. Die Einstellung der Opacity für die Form zwischen 0 und 100 Prozent. Dann kann die Form sozusagen semitransparent dargestellt werden. Allerdings werden dann auch alle auf der Form platzierten Controls gleich mit transparent gezeigt.

Um den Hintergrund von Controls semitransparent zu machen, die Controls aber in "Original"-Darstellung anzuzeigen, kann man sich mit dem folgenden Trick behelfen. Es wird eine zweite Form definiert, die sogenannte BackgroundForm, die dann in der Runtime genau hinter der MainForm positioniert wird.

MainForm sei die Hauptform, auf der die Controls angeordnet sind.
Dann richtet man diese Form so ein, wie hier im Code des Load-Events notiert:

BackColor mit der gewünschten Farbe, die dann gleichzeiteig zu TransparencyKey gemacht wird.
Als Public Property bgFrmForm wird die BackgroundForm vorgegeben.
Diese BackgroundForm wird jetzt mit Eigenschaften versorgt:

  • die Eigenschaft bgColor wird auf die BackColor der MainForm eingestellt
  • die Semitransparenz wird auf einen Wert zwischen 0 und 1 eingestellt
  • die MainForm wird zur OwnerForm
  • die BackgrundForm wird angezeigt

Beschreibung der BackgroundForm:
Sie enthält die drei Eigenschaften bgOwnerForm, bgOpacity, bgColor, die alle beim Laden der MainForm voreingestellt werden. Sie steuern das Erscheinungsbild des Hintergrunds.
Im Shown-Event der BackgroundForm wird zunächst

  • die OwnerForm gesetzt, dann
  • die Größe mit der Größe der Mainform gleichgesetzt
  • die Location mit der Location der MainForm gleichgesetzt
  • die BackColor aus der Eigenschaft bgColor gesetzt
  • die Opacity aus der Eigenschaft bgOpacity gesetzt

Jetzt wird zur MainForm ein semitransparenter Hintergrund in einer gewünschten Farbe gezeigt und alle Controls der MainForm werden "nichttransparent" angezeigt.

Hier der Code zur MainForm:

Public Class MainForm
  Public Property bgFrmForm As Form = BackgroundForm
 
  Public Sub New()
    InitializeComponent()
    SetStyle(ControlStyles.OptimizedDoubleBuffer Or ControlStyles.AllPaintingInWmPaint _
      Or ControlStyles.ResizeRedraw Or ControlStyles.UserPaint, True)
  End Sub
 
  Private Sub MainForm_Load(sender As Object, e As EventArgs) _
    Handles Me.Load
 
    BackColor = Color.Black
    TransparencyKey = BackColor
    BringToFront()
 
    With BackgroundForm
      .bgColor = BackColor
      .bgOpacity = 0.4
      .bgOwnerForm = Me
      .Show()
    End With
  End Sub
 
End Class

Hier der Code zur BackgroundForm:

Public Class BackgroundForm
 
  Public Property bgOwnerForm As Form 
  Public Property bgOpacity As Single = 0.6
  Public Property bgColor As Color = Color.Black
 
  Public Sub New()
    InitializeComponent()
    SetStyle(ControlStyles.OptimizedDoubleBuffer Or ControlStyles.AllPaintingInWmPaint _
           Or ControlStyles.ResizeRedraw Or ControlStyles.UserPaint, True)
  End Sub
 
  Private Sub dhBackgroundForm_Shown(sender As Object, e As EventArgs) _
    Handles Me.Shown
 
    Owner = bgOwnerForm
    Size = New Size(bgOwnerForm.Size)
    Location = New Point(bgOwnerForm.Location)
    BackColor = bgColor
    Opacity = bgOpacity
  End Sub
 
End Class

Hinweis:
Dieser Tipp zeigt ausschließlich ein Prinzip der Lösung auf. Es werden nicht Aktionen wie Resizing, Verschieben oder dergleichen der MainForm behandelt!

Dieser Tipp wurde bereits 3.056 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Aktuelle Diskussion anzeigen (1 Beitrag)

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel