Announcement

Collapse
No announcement yet.

Color zu Decimal

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

  • Color zu Decimal

    Hallo,
    mit dem Umrechnen der Colorwerte hab ichs nicht so :-(
    Es gibt dazu im Netz zahllose Beispiele, hab sie alle angesehen, aber keins passt für mich.
    Da ich in diesem hervorragenden Forum immer punktgenaue Lösungen bekam, hoffe ich auch dieses Mal wieder auf einen Erfolg.

    An mehreren Stellen im Projekt wird die Farbe aus einem Dezimalwert (wird in einer MySql-Tabelle gespeichert) berechnet und dargestellt. Zum Beispiel
    Code:
    drow.HeaderCell.Style.BackColor = Color.FromArgb(255, Color.FromArgb(CInt(drow.Cells(4).Value)))
    Diesen Code möchte ich auf jeden Fall so belassen.
    Nun brauche ich einmal das genaue Gegenteil, nämlich den Dezimalwert einer Farbe, um ihn abzuspeichern.
    In mehreren Beiträgen im Netz soll man das so ausrechnen:
    Code:
                    Dim c As Color = dr.HeaderCell.Style.BackColor
                    Dim int As Int32 = c.R + (c.G * 256) + (c.B * 65536)
    Im Falle von Rot als BackColor bekomme ich den Wert 255. Wenn ich den mit o.g. Code wieder als Farbe darstellen will, kommt aber "Blau" heraus.
    Wie muss man das richtig machen?
    Grüße Norbert

  • #2
    Dim int As Int32 = c.R + (c.G * 256) + (c.B * 65536)
    Wo stehen in einer Zahl die höchsten Werte? Links
    du rechnest als blau mal 65536 und verschiebst damit den Wert von Blau 16 Stellen nach links und baust dir ein BGR Format. Du willst aber RGB.

    Comment


    • #3
      So hab ich es an mehreren Stellen im Netz gefunden. Bitte sag nun einen Dummy wie mir, wie es richtig gerechnet wird ...

      Comment


      • #4
        So hab ich es an mehreren Stellen im Netz gefunden. Bitte sag nun einen Dummy wie mir, wie es richtig gerechnet wird ...
        Das ist eine äußerst unbefriedigende Antwort. Ich hätte zumindest gehofft das du versuchst das zu verstehen und nicht einfach so nimmst wie du es irgendwo findest. Ich nenn sowas immer Legoprogramming. Man nimmt so'nen (Code)Klotz und wenn der nicht passt nehm ich halt einen anderen bis einer passt und wenn keine passt weint man.

        Ich versuch es mal mit einem Analogon aus dem Dezimalsystem.
        Du hast 5 Hunderter und 7 Zehner und ein 3 also

        5 * 100 + 7*10 + 3 = 573

        Und jetzt nochmal zu RGB (beachte die Reihenfolge der Buchstaben). R steht links ist die höchstwertigste Stelle, entspricht also etwa dem Hunderter, und Blau ist eigentlich rechts und hat den kleinsten Stellenwert. Was mußt du also tun damit wenn du die einzelnen Wert von R G B richtig ananeinander hängen willst?

        Comment


        • #5
          Ja schimpf nur mit mir ... ;-)
          Bisher hast Du mir Deine Antworten immer fertig lecker serviert. Nun verlangst Du, dass ich selber koche.
          Aber es schmeckt dadurch jetzt auch besser. Will sagen: hab meine "Faulheit" bezwungen und mich nochmal bisserl intensiver damit geschäftigt und Voila:
          jetzt hab ich's kapiert und es funktioniert auch!

          Vielen Dank und herzliche Grüße
          Norbert

          Comment


          • #6
            So mag ich das

            Comment

            Working...
            X