Announcement

Collapse
No announcement yet.

Color aus Integer

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Color aus Integer

    Hallo,
    Anforderung: DataGridView-Zellhintergrund färben
    vorgegeben sind Farben als Integer
    die entsprechen aber leider nur RGB
    Wenn ich Color.FromArgb(integer) programmiere, wird nix gefärbt.
    Hab herausgefunden, dass Alpha nicht in Vb.Net auf 255 gesetzt wird, sondern es wird dafür Null genommen.
    Das ist aber nur bei einem Integer so.
    Color.FromArgb(30,40,50) setzt Alpha automatisch auf 255
    Wie komme ich aus der Misere heraus? Kann ich den vorgegebenen Integer mit einem Wert multiplizieren damit Alpha 255 wird?
    Ein DataGridView bietet leider nicht die Möglichkeit, einen Zellenhintergrund zu blenden (sprich: Alpha zu reduzieren), was ich lieber tun würde. Aber auf Painting möchte ich, wenn's geht, verzichten.

    Grüße Norbert

  • #2
    Du kannst GridCellen so einfärebn auch Forecolor

    Code:
    Dim myDataGridViewCellStyle As new DataGridViewCellStyle
    
    myDataGridViewCellStyle.ForeColor = Color.White
    myDataGridViewCellStyle.BackColor = Color.Green
    
    With Me.myDGV
    .item((i), myRowIndex).Style = myDataGridViewCellStyle
    End With
    JonDonym: privacy needs anonymity more than ever

    Comment


    • #3
      Danke. Wie man Zellen im DGV färbt weiss ich. Nur mit dem Rechnen in Hex und Bytes haperts bei mir ganz gewaltig.
      Ich habe also einen Integer von 8388736 und daraus soll "Purple" gemacht werden.
      .BackColor = Color.FromArgb(8388736) färbt nix.

      Comment


      • #4
        Ich vermute mal du hast den Wert 8388736 irgendwo hinterlegt und musst den so verwenden?
        Ansonsten würde ich dir empfehlen einfach die Überladung von FromArgb mit getrennten Kanälen zu verwenden da hast du mehr Kontrolle bzw. es ist lesbarer.

        Wenn du nur den genanten Wert mit passend gesetzten Alphakanal brauchst hat da FromArgb auch eine passende Überladung.

        [HIGHLIGHT=VB.NET].BackColor = Color.FromArgb(255, Color.FromArgb(8388736))[/HIGHLIGHT]

        Comment


        • #5
          Prima. Das funktioniert. Danke!
          Es sind zirka 20 Integer-Werte vorgegeben, wie die Zellen, je nach Kriterium, gefärbt werden müssen. Ist Deine Lösung einfacher, als z.B. zu dem Integer etwas zu addieren oder ihn mit etwas zu multiplizieren, damit ich in einem Rutsch gleich FromArgb verwenden kann, ohne den Alpha mit 255 extra anzugeben? Danach hatte ich eigentlich gesucht, aber ich hab's nicht gerafft. Wird wahrscheinlich eh nicht kürzer - besser - schneller - eleganter - professioneller ...
          Werde wohl Deine Lösung einbauen.
          Viele Grüße
          Norbert

          Comment


          • #6
            Ist Deine Lösung einfacher, als z.B. zu dem Integer etwas zu addieren oder ihn mit etwas zu multiplizieren, damit ich in einem Rutsch gleich FromArgb verwenden kann, ohne den Alpha mit 255 extra anzugeben? Danach hatte ich eigentlich gesucht, aber ich hab's nicht gerafft. Wird wahrscheinlich eh nicht kürzer - besser - schneller - eleganter - professioneller ...
            Nein am Ende wird eh immer ein Int32 draus und obige Funktion tut auch nix anders als das auszurechen. Du kannst auch gerne selbst rechnen.
            [HIGHLIGHT=VB.NET].BackColor = Color.FromArgb(8388736 - 16777216)[/HIGHLIGHT]
            oder
            [HIGHLIGHT=VB.NET].BackColor = Color.FromArgb((255 << 24) + 8388736)[/HIGHLIGHT]
            oder
            [HIGHLIGHT=VB.NET].BackColor = Color.FromArgb(&HFF000000 + 8388736)[/HIGHLIGHT]
            oder oder
            gibt da tausende Varianten das zu machen

            Comment


            • #7
              Und ich hab nicht mal eine einzige auf dem Schirm gekriegt. Schäm. :-(
              Nochmals vielen Dank und einen schönen Abend noch.

              Comment

              Working...
              X