vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Transparenter LABEL-Hintergrund 
Autor: Rainer
Datum: 13.04.18 17:44

Hallo,
ich versuche ein Meldungsfenster mit Hilfe eines Labels darzustellen, dessen Hintergrund vollständig oder teilweise transparent dargestellt wird. Ähnlich den Meldungsfenstern des Betriebssystems. Versucht habe ich es mit der Anweisung:
Me.Label1.BackColor = Color.FromArgb(0.5, 255, 255, 255)
Leider war mir damit kein Erfolg beschieden. Hat jemand einen Tipp, wie ich mein Ziel erreichen kann?
Gruß, Rainer.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Transparenter LABEL-Hintergrund 
Autor: Manfred X
Datum: 13.04.18 21:34

Ein WinForms-Formular ....
Public Class frmTransparenz
    Private Sub frmTransparenz_Load(sender As Object, e As EventArgs) Handles _
      MyBase.Load
 
        Me.FormBorderStyle = FormBorderStyle.None
 
        Me.TransparencyKey = Color.LightBlue
        Me.BackColor = Color.LightBlue
 
        Me.ForeColor = Color.Red
        Me.Font = New Font("Arial", 36, FontStyle.Bold)
        Me.Size = New Size(600, 150)
 
        Me.StartPosition = FormStartPosition.Manual
        Me.Location = New Point(300, 300)
 
    End Sub
 
 
    Private Sub frmTransparenz_Paint(sender As Object, _
        e As PaintEventArgs) Handles Me.Paint
 
        Using br As New SolidBrush(Me.ForeColor)
            e.Graphics.DrawString _
            ("May be, that's the way ....", Me.Font, br, New Point(30, 30))
        End Using
 
    End Sub
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Transparenter LABEL-Hintergrund 
Autor: Rainer
Datum: 16.04.18 19:47

Hallo Manfred,
vielen Dank für Deine Hilfe. Es hat auf Anhieb funktioniert.
Eine Frage hätte ich noch:
Bei Deiner Lösung wird die 100%ige Transparenz realisiert. Mein ursprüngliches Vorhaben bestand darin, mit der Alphakanal-Einstellung der FROMAGB-Funktion die dort mögliche Abstufung der Transparenz zu nutzen. Kennst Du dafür auch eine Lösung?
Gruß, Rainer.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Transparenter LABEL-Hintergrund 
Autor: Manfred X
Datum: 17.04.18 09:15

Hallo!

Du könntest die Opacity-Eigenschaft der Form nutzen, um temporär
Teil-Transparenz zu erzeugen und eine Meldebox vor diese Form
einblenden.

Die Meldebox ....
Public Class frmMessage
 
    Dim _messagetext As String
 
    Public Property MessageText As String
        Set(value As String)
            _messagetext = value
        End Set
        Get
            Return _messagetext
        End Get
    End Property
 
    Private _messagefont As Font
 
    Public Property Messagefont As Font
        Set(value As Font)
            _messagefont = value
        End Set
        Get
            Return _messagefont
        End Get
    End Property
 
 
    Public ReadOnly Property GetGraphics As Drawing.Graphics
        Get
            Return lblMessage.CreateGraphics
        End Get
    End Property
 
 
    Dim WithEvents lblMessage As New Label With {.Parent = Me}
 
 
    Private Sub frmMessage_Load(sender As Object, 
        e As EventArgs) Handles MyBase.Load
 
        Me.FormBorderStyle = FormBorderStyle.None
 
        'Me.TransparencyKey = Color.Transparent
 
        lblMessage.BackColor = Color.White
 
        With lblMessage.DataBindings
            .Add("Text", Me, "Messagetext")
            .Add("Font", Me, "Messagefont")
        End With
 
    End Sub
 
 
    Private Sub frmMessage_Resize(sender As Object, 
        e As EventArgs) Handles Me.Resize
 
        lblMessage.Size = 
        New Drawing.Size(Me.ClientRectangle.Width, Me.ClientRectangle.Height)
    End Sub
 
 
    Private Sub lblMessage_Click(sender As Object, 
        e As EventArgs) Handles lblMessage.Click
 
        Me.Close()
    End Sub
End Class
.
.

Das Formular ....
Public Class frmMother
 
 
    Dim pl As New Panel With _
        {.Parent = Me, .BorderStyle = BorderStyle.Fixed3D}
 
    Dim WithEvents btnMessage As New Button With
        {.Parent = pl, .Location = New Point(100, 100),
        .Text = "Show Message", .Width = 100}
 
 
    Private Sub frmMother_Load(sender As Object, 
        e As EventArgs) Handles MyBase.Load
 
        Me.Size = New Size(500, 500)
    End Sub
 
 
    Private Sub btnMessage_Click(sender As Object, 
        e As EventArgs) Handles btnMessage.Click
 
        Me.Opacity = 0.5 'Hauptformular teil-transparent anzeigen
 
        Using Mymessage As New frmMessage
            With Mymessage
                'Eigentümer des Dialogs setzen
                .Owner = Me
 
                'Text und Font der Meldung 
                .MessageText =
                    "Das ist eine Meldung. " &
                    "Bei einem Click auf das Meldefenster " & 
                    "wird die Anzeige beendet."
 
                .Messagefont = New Font("Arial", 16, FontStyle.Italic)
 
                'Erforderliche Höhe der Meldung 
                'bei festgelegter Breite ermitteln
                Dim sz As SizeF
                Dim message_width As Integer = 200
                Using g As Graphics = .GetGraphics
                    sz = g.MeasureString(.MessageText, .Messagefont, 
                                         message_width)
                End Using
                .ClientSize = New Size(message_width, CInt(sz.Height * 1.1))
 
                'Dialog lokalisieren und ausführen
                .StartPosition = FormStartPosition.CenterParent
                .ShowDialog()
            End With
        End Using
 
        Me.Opacity = 1 'Hauptformular ohne Transparenz
    End Sub
 
 
    Private Sub frmMother_Resize(sender As Object, 
        e As EventArgs) Handles Me.Resize
 
        pl.Size = Me.ClientSize
    End Sub
End Class


Beitrag wurde zuletzt am 17.04.18 um 09:24:32 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Transparenter LABEL-Hintergrund 
Autor: Rainer
Datum: 17.04.18 11:22

Hallo Manfred,
die OPACITY-Variante ist ein guter Hinweis. Nur, daß ich sie nicht für das Hauptformular (Ich glaube der Nutzer, der plötzlich beim Auftauchen einer Meldung im Hauptfenster den Desktop-Hintergrund oder andere Fenster durchschimmern sieht, würde diese Lösung nicht akzeptieren und "verwirrt" reagieren.) nutze, sondern für das Meldungsfenster selbst. Das funktioniert natürlich nur, wenn die TRANSPARENCYKEY-Einstellung deaktiviert wird.
Also nochmals Danke für Deine Unterstützung.
Gruß, Rainer.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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