Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Zamiana liczby na kolor, Formatowanie warunkowe ala Excel
TomASS
post
Post #1





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


Witajcie,

Potrzebuję zrobić funkcję:

  1. function getColor($min, $max, $value){
  2. ....
  3. }


która to zwróci mi kolor (do użycia w CSS) ze "skali" od czerwonego (dla wartości mniejszej/równej $min), przez żółty (dla wartości środkowej) aż do zielonego (dla wartości większej/równej $max).

coś na wzór:
(IMG:http://i.stack.imgur.com/uErDJ.png)

Czy ktoś wie jak uzyskać kolor z tej skali w sposób "ciągły"?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
SmokAnalog
post
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Ten problem to czysta matematyka. Możesz poszukać gotowej funkcji, a jeśli masz ochotę zrobić swoją, to masz pole do popisu. Idealnie byłoby, gdyby funkcja przyjmowała dowolną liczbę kolorów w gradiencie. Idealnie byłoby zrobić to obiektowo, żeby wywoływane było to np. tak:
  1. $gradient = new Gradient();
  2. $gradient->addColor(new Color(0, 255, 0), 0);
  3. $gradient->addColor(new Color(255, 255, 0), 0.5);
  4. $gradient->addColor(new Color(255, 0, 0), 1);
  5. var_dump($gradient->getColor(0.25)); // zwróciłoby obiekt klasy Color będący kolorem pośrednim między zielonym a żółtym

Można to też uprościć (chociaż już nie będzie tak elegancko) i stworzyć po prostu funkcję. Jeśli miałaby mieć tę samą funkcjonalność, musiałaby przyjmować kolory w tablicy lub jako zmienną liczbę parametrów, a pierwszym (lub ostatnim) parametrem byłaby pozycja pożądanego koloru (najlepiej w skali <0;1>). Wtedy do ustalenia byłby sposób podawania i zwracania kolorów, np. tablica array('r' => ..., 'g' => ..., 'b' => ...) lub szesnastkowo.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 16:03