Zwischenfarben herausfinden

  • Zwischenfarben herausfinden

    Hallo
    Mir stellt sich folgendes Problem:
    Ich will eine runde Ecke machen. Das ganze Funktioniert auch, nur hab ich noch ein Problem
    Der Benutzer soll die Farben selber auswählen können.
    Jetzt müsste ich nur noch die Zwischenfarben zwischen dem Hintergrund und der Box bekommen können, da die Kurve sonst eher recht abgehackt aussieht

    Also in einem Beispiel
    Wie komme ich von
    Hintergrund: #FFFFFF
    Box: #FF6600
    auf #ffbd91, #ff8c3f, #ffefe5, #ff8330

    Wäre sehr dankbar, wenn mir da wer helfen könnte!

    lu
  • Schritt 1: Hexzahl in drei 2er Gruppen teilen
    Schritt 2: Jede Gruppe in Dezimalzahlen umrechnen
    Schritt: 3: Berechnung nach D0nuts Vorschlag durchführen
    Schritt 4: Gruppen wieder zu Hexzahl zusammenführen

    Einzigstes Problem: Es könnte sein (bin mir nicht sicher - habs nicht ausprobiert), dass die Zahlen bei Addition oder Multiplikation zu groß für eine Darstellung mit zwei Zeichen wird. Ich weiß aber leider auch nicht, wie sich eine Farbe verhält, wenn bei einer solchen Berechnung z.B. die mittleren beiden Werte über FF bewegen.. Könnte sein, dass sie da einfach stoppen - müsstest du ausprobieren oder jemand muss es logisch erklären :D


    lG
  • Hi
    Entschuldigung, dass ich mich erst so spät wieder melde, aber ich hatte viel zu tun!
    Danke für eure Hilfe! Es hat alles super funktioniert!

    Für die, die es intressiert, lass ich euch noch die fertige Funktion da, vielleicht könnt ihr auch noch was verbessern :)

    Quellcode

    1. function cornercolor($var1, $var2, $var3) {
    2. $a = $var1;
    3. $A = $var2;
    4. if(substr($var1, 0, 1) == "#") $a = substr($var1, 1, 6);
    5. if(substr($var2, 0, 1) == "#") $A = substr($var2, 1, 6);
    6. if($var3 == 1) {
    7. $r = (1/4 * hexdec(substr($a, 0, 2)) + 3/4 * hexdec(substr($A, 0, 2)));
    8. $g = (1/4 * hexdec(substr($a, 2, 2)) + 3/4 * hexdec(substr($A, 2, 2)));
    9. $b = (1/4 * hexdec(substr($a, 4, 2)) + 3/4 * hexdec(substr($A, 4, 2)));
    10. echo sprintf('#XXX', $r, $g, $b);
    11. }elseif($var3 == 2) {
    12. $r = (1/2 * hexdec(substr($a, 0, 2)) + 1/2 * hexdec(substr($A, 0, 2)));
    13. $g = (1/2 * hexdec(substr($a, 2, 2)) + 1/2 * hexdec(substr($A, 2, 2)));
    14. $b = (1/2 * hexdec(substr($a, 4, 2)) + 1/2 * hexdec(substr($A, 4, 2)));
    15. echo sprintf('#XXX', $r, $g, $b);
    16. }elseif($var3 == 3) {
    17. $r = (3/4 * hexdec(substr($a, 0, 2)) + 1/4 * hexdec(substr($A, 0, 2)));
    18. $g = (3/4 * hexdec(substr($a, 2, 2)) + 1/4 * hexdec(substr($A, 2, 2)));
    19. $b = (3/4 * hexdec(substr($a, 4, 2)) + 1/4 * hexdec(substr($A, 4, 2)));
    20. echo sprintf('#XXX', $r, $g, $b);
    21. }elseif($var3 == 4) {
    22. $r = (7/8 * hexdec(substr($a, 0, 2)) + 1/8 * hexdec(substr($A, 0, 2)));
    23. $g = (7/8 * hexdec(substr($a, 2, 2)) + 1/8 * hexdec(substr($A, 2, 2)));
    24. $b = (7/8 * hexdec(substr($a, 4, 2)) + 1/8 * hexdec(substr($A, 4, 2)));
    25. echo sprintf('#XXX', $r, $g, $b);
    26. }
    27. }
    Alles anzeigen


    Und das könntet ihr euch auch mal anschaun (Komplementärfarbenberechnung)

    Quellcode

    1. function kocolor($var) {
    2. $a = $var;
    3. if(substr($var, 0, 1) == "#") $a = substr($var, 1, 6);
    4. $r = (255 - hexdec(substr($a, 0, 2)));
    5. $g = (255 - hexdec(substr($a, 2, 2)));
    6. $b = (255 - hexdec(substr($a, 4, 2)));
    7. echo sprintf('#XXX', $r, $g, $b);
    8. }


    lu

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von venum-lk ()