Control - Hintergrund farben mitändern

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Gather.

    Control - Hintergrund farben mitändern

    Hallo liebe Community,
    ich würde gerne wissen, ob es möglich ist, dass wenn ich z.B. meinen Button auf ein Pabel mit sagen wir BackColor = Color.Red ziehe,
    dass sich dann die Hintergrundfarbe vom Button auf auch Red ändert, nur etwas dunkler?

    Sprich kann man da irgendwie die Helligkeit oder die RGB subtrahieren?

    Bitte um Hilfe.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Danke erstmal,

    Ich habe mich auch noch Informiert,
    ist es möglich die Hintergrundfarbe auszusplitten (in RGB) und diese einfach niedriger stellen?

    Das ganze im OnBackColorChanged Event?
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Und das funktionier dann soeinfach? (ich kanns jetzt net testen deswegen)
    Also würde funktionieren:

    VB.NET-Quellcode

    1. Dim Red As Integer = BackColor.R
    2. Dim Green As Integer = BackColor.G
    3. Dim Blue As Integer = BackColor.B
    4. Red = BackColor.R - 20
    5. Green = BackColor.G - 20
    6. Blue = BackColor.B - 20
    7. _BackgroundColorNormal = Color.FromArgb(Red, Green, Blue)
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    anders rum, oder ;)

    VB.NET-Quellcode

    1. Private Sub TextBox1_BackColorChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handls TextBox1.BackColorChanged
    2. Dim offset As Byte = 20
    3. With TextBox1
    4. .Parent.BackColor = Color.FromArgb(.BackColor.R - ofset, .BackColor.G - offset, .BackColor.B - offset)
    5. End With
    6. End Sub
    7. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    8. Dim rnd As New Random
    9. TextBox1.BackColor = Color.FromArgb(rnd.Next(20, 256), rnd.Next(20, 256), rnd.Next(20, 256))
    10. End Sub

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „FloFuchs“ ()

    FloFuchs schrieb:

    VB.NET-Quellcode

    1. Private Sub TextBox1_BackColorChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handls TextBox1.BackColorChanged
    2. Dim offset As Byte = 20
    3. With TextBox1
    4. .Parent.BackColor = Color.FromArgb(.BackColor.R - ofset, .BackColor.G - offset, .BackColor.B - offset)
    5. End With
    6. End Sub
    Das ganze geht vor die Hose, wenn die Ausgangsfarbe sehr dunkel ist.
    Statt eines Offsets kannst Du auch einen Faktor dran hängen(0,9 oder so), da bleiben die Werte immer im erlaubten Bereich.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    VB.NET-Quellcode

    1. TextBox1.BackColor = Color.FromArgb(rnd.Next(20, 256), rnd.Next(20, 256), rnd.Next(20, 256))

    RodFromGermany schrieb:

    Das ganze geht vor die Hose, wenn die Ausgangsfarbe sehr dunkel ist

    nö... der Hintergrund kann maximal schwarz werden.... weil der niedrigste Wert für die Textbox 20 is ;)
    ich gebe zu schwarz auf schwarz liest sich schlecht .. aber es wird ja nur das Parent geändert... evtl Beschriftung wird ja in anderen Controls stehen ... aber generell weiß ich was du meinst ;)

    FloFuchs schrieb:

    weil der niedrigste Wert für die Textbox 20 is ;)
    OK.
    Pack aber die Zeile

    VB.NET-Quellcode

    1. Dim rnd As New Random
    aus der Prozedur raus.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich frage jetzt relativ unschön, jedoch was wäre jetzt die schönste Variante?
    Die von Alive, jedoch danach noch Fehler mit If abfangen, sprich:

    VB.NET-Quellcode

    1. If Blue < 0 Then Bla

    Bzw wenn ich die box heller machen will Blue > 255


    Oder Flos Variante?
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Gather schrieb:

    was wäre jetzt die schönste Variante?
    Da die Geschmäcker verschieden sind, im Zweifel die andere. :D
    Das bleibt allein Dir überlassen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Naja es geht mir darum, ein schönes und qualifiziertes Control zu schreiben.
    Deswegen formuliere ich meine Frage besser um, welcher Code wäre besser für ein Control geeignet?
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Sie ist komplett frei, deswegen werde ich wahrscheinlich alives methode nehmen, da kenn ich mich aus ;D
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!