Skocz do zawartości
Issen

[Help]Zmienne c1,c2,c3,c4,

Rekomendowane odpowiedzi

Wiecie może w jaki sposób jest kodowany kolor w funkcji

draw_text_color(x,y,string,c1,c2,c3,c4,alpha)

kolor przedstawia:

c1 - lewy gorny

c2 - prawy gorny

c3 - prawy dolny

c4 - lewy dolny

a teraz w jakiej zmiennej mieszcza sie te kolory

probowalem wstawic hex i tez nie dziala, wpisuje 1000 i jest kolor czerwony. Troche sie zmieszalem czy ktokolwiek wie jak policzyc kolor? naprzykład pomaranczowy: #FFA000

 

http://www.kurshtml.boo.pl/html/kolory.html

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Hexy to są do htmla, nie do GM'a!!! :/

 

A coś mi sie tu widzi że nie chodzi o lewy, prawy, górny, dolny tylko o składowe koloru, red green blue itp. I używaj liczb z przedziału 0-255.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

właśnie to nie sa składowe bo jak by tak było to po problemie. Zreszta składowe to 3 kolory a nie 4!!!!!!!!!!!!!!!!!

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
właśnie to nie sa składowe bo jak by tak było to po problemie. Zreszta składowe to 3 kolory a nie 4!!!!!!!!!!!!!!!!!

 

W takim bądź razie w których zmiennych sie ustawia składowe? Zresztą z tego co wiem GM nie obsługuje jeszcze gradientów, to ja nie wiem skąd to wziąłeś... ;/

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Gradienty są w GM. Kolor liczony jest tak:

kolor = czerwony + zielony * 255 + niebieski * 255 * 255;

Czyli podstawiajac 1000 masz kolor: 235 + 3 * 255 + 0 czyli szesnastkowo: EB0300

 

Ale zeby sie nie przemeczac, to od tego jest funkcja zwracajaca kolor:

kolor = make_rgb_color( red, green, blue ); //podstawiasz liczby od 0 do 255.

 

Powyzsza forma to odwzorowanie koloru w formie liczby dziesietnej, oczywiscie mozesz nie uzywac funkcji make_rgb_color tylko wprost zapisu szesnastkowego, poniewaz GM obsluguje takowy, ale z prefiksem dolara:

kolor = $FFA00;

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Dzięki! Domyślałem się że to jakoś tak musi być! Ale myślałem decymalnie. Znaczy ze mnozyłem razy 1000 :)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Dam jeszcze tylko przykład KODU

 

W draw:

kolor = make_color_rgb( 255, 210, 0 );
draw_text_color(1,1,'Cze',kolor,kolor,kolor,kolor,1);

 

Z funkcją szesnastkową nie działa za dobrze.

Chodziło ci o funkcje:

make_color_rgb(r,g,b);

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Nie. Dobrze napisałem, zapis szesnastkowy (a nie funkcja) działa dobrze. Tylko mała uwaga, której się nie przyjrzałem wcześniej i popełniłem błąd:

 

#EB0300 to html'owy zapis 3 liczb 1-bajtowych

 

$EB0300 to zapis GM'owy ale nie 3 ale 1 liczby (będę strzelał, bo nie jestem pewien co tam Mark Overmars zaimplementował) 4 bajtowej. Nie ma w systemach liczb 3 bajtowych (tylko potęgi liczby 2), więc po stronie GM'a jest to tak naprawdę liczba $00EB0300, ponieważ następuje dopełnienie od lewej strony.

 

Ale dość już o bajtach, wróćmy do sedna. Tak jak dziesiętnie w liczbach arabskich kolejne cyfry wraz ze wzrostem liczby są dopisywane z lewej strony: 10, 210, 5410 itd. tak samo jest heksadecymalnie (szesnastkowo) 93, FF93, A6FF93 itd. Krótko mówiąc jeżeli $EB0300 to jedna liczba, a nie trzy zapisane kolejno po sobie, a kolor czerwony jest najmniejszą składową (bo nie mnożona przez 255) liczby koloru, to trzeba ją zapisać ... na odwrót, gdyż kolor czerwony powinien znajdować się po prawej stronie:

 

$0003EB - nie RGB a BGR. :)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×