Announcement

Collapse
No announcement yet.

Delphi7: color properties als RGB

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

  • #16
    Wo ist das Problem?
    Denke du hast massive Problem zu verstehen was ein String ist. Es gibt keine "Hex-Wert" als Datentyp

    "Hallo" -> String
    "$FF" -> String
    "FF" -> String
    "$FFFFFF" -> String

    Es spielt keine Rolle, dass das was da im String ist zufällig ein Hex-Wert ist.

    Das kann man so machen:


    r=StrToInt("0x"+HexEdit1->Text.SubString(1,2));
    g=StrToInt("0x"+HexEdit1->Text.SubString(3,2));
    b=StrToInt("0x"+HexEdit1->Text.SubString(5,2));

    Das ist C++Builder Code, den du wohl leicht übernehmen kannst. Dort liegt im HexEdit1 Feld ein String im Format FFFFFF vor (ohne führendes $, das ggf. berücksichtigen).

    Die Funktion StrToInt rechnet einen String in einen Int. Steht davor 0x wird eine Hexa-Umrechnung gemacht



    Ich sehe hier auch, dass ichIntToHex nicht gebrauchen kann, weil ich zB. 3A nicht als Int darstellen kann...
    Nein, weil IntToHex das Gegenteil macht: Einen int in ein Hex-String-Wert umrechnen

    Dafür ist StrToInt da mit "0x" siehe oben

    In Beitrag #11 ist ein Beispiel, wie du den Colorwert selbst nach RGB umsetzt
    Zuletzt editiert von Christian Marquardt; 07.01.2011, 19:11.
    Christian

    Comment


    • #17
      Danke, Christian, und auch an Dich, Helmut, für Eure ausführlichen Beschreibungen.

      Was ein String ist, ist mir schon immer klar, da hab ich keine Probs. Das mit dem StrToInt und dem vorangestellten 0x wusste ich allerdings nicht, und bin auch nirgendwo drauf gestoßen.
      Das ist - glaube ich - sicher von allgemeinerem Interesse.
      Ich hatte es erfolglos mit vorangestelltem $ ausprobiert.
      __________________________________________________ _______

      Mit meinem Start in dieses Thema hatte ich mir eigentlich vorgestellt, dass es für solche Probleme fertige und kompakte Lösungen gibt bzw. dass jemand solche kennt. Nun sehe ich, ich muss selber Hand anlegen. Das wurde mir im Verlauf dieser Diskussion dann auch sehr frühzeitig klar. Auf jeden Fall hat mir das alles sehr viel gebracht - wann muss man sich schon mal mit dem Thema color auseinandersetzen (außer in der Entwursphase mit rudimentären Dingen) ?

      Nun möchte ich mich recht herzlich bei den Beteiligten für Ihre geduldige Hilfe bedanken.

      Gruß
      Hanno
      Zuletzt editiert von Hanno Reimann; 08.01.2011, 10:10.

      Comment


      • #18
        Fertiger Code für Farbänderung aus RGB-Darstellung

        Hallo,

        hier möchte ich nun das Ergebnis dieser Diskussion zeigen.
        Und es ist (entgegen meinen Befürchtungen) doch recht kurz.

        Eine Unit, bestückt mit Editfield, Button, Label und Shape wird zum Test erstellt.

        Der Code für den Button sieht so aus:

        procedure TForm1.Button1Click(Sender: TObject);
        Var col:TColor;
        begin
        //RGB-Hexwerte zu Farbwert zusammenfügen
        col:=
        StrToInt('0x'+copy(Edit1.Text,5,2)) Shl 16 //HEX-Blau (Wert 5+6 aus Textfeld)
        Or
        StrToInt('0x'+copy(Edit1.Text,3,2)) Shl 8 //HEX-Grün (Wert 3+4 aus Textfeld)
        Or
        StrToInt('0x'+copy(Edit1.Text,1,2)); //HEX-Rot (Wert 1+2 aus Textfeld)
        // Farbzuweisung an Objekt
        Shape1.Brush.Color:=col;
        // Farbwert-Anzeige
        Label1.Caption:= IntToStr(col);
        end;


        Die Eingabe ins Textfeld sieht dann so aus, zB. für ROT: FF0000

        Gruß
        Hanno
        Zuletzt editiert von Hanno Reimann; 08.01.2011, 13:31.

        Comment

        Working...
        X