[C++] gradient

0

moze to juz bylo ale jak szybko i latwo mozna narysowac gradient od jednego do drugiego koloru ??

0

to zalezy od srodowiska, jezeli chcesz to zrobic w BCB to sprawa jest prosta:
petla+funkcje GetRValue(),GetGValue(),GetBValue(), RGB(), oraz SetPixel()...

0

spoko fajnie... ale jaka jest matematyka przejscia??

0

jaka matematyka???
wystarczy w petli dodawac do poszczegolnej skladowej jakas liczbe np. 1.

poza tym patrz tu...

int Height; Height = (ClientHeight + 255) / 256 ;
   for (int Row = 0; Row <= 255; Row++)
   {
      Canvas->Brush->Color = RGB(0, 0, 255-Row);
      Canvas->FillRect(Rect(0, Row * Height, ClientWidth, (Row + 1) * Height));
   }

0

+1 to tez matematyka :P

0

to jest wziete prosto z pomocy BUildera... ale to robi gradient od niebieskiego do czarnego... ale jak narysowac gradient od dowolnego koloru do dowolnego koloru (np od clSilver do clWhite) tak zeby petla po drodze nie wymyslila mi jakiegos innego koloru ktory nie bedzie wynikiem przejscia z jednego do drugiego... o to mnie chodzi... ja z programowania grafiki jestem dosyc cienki wiec wybaczcie za to lamerstwo...

0

Jej, przecież każdy kolor ma składowe r, g i b przejście z jednego koloru do drugiego to przejscie pomiedzy nasyceniem składowych r, g i b jednego koloru (RGB(r1,g1,b1)) do nasycenia składowych r, g ,b drugiego koloru (RGB(r2,g2,b2)). Powiedzmy że za pierwotny poziom bierzesz pierwszy kolor, obliczasz roznice w skladowych dr=r2-r1, dg=g2-g1 ,db=b2-b1, potem ustalasz sobie ilośc_kroków i za kazdym krokiem ustawiasz kolor:

RGB(r1+dr*(krok/ilosc_krokow),g1+dg*(krok/ilosc_krokow),b1+db*(krok/ilosc_krokow)).

Banalne, tylko musisz zadbac, zeby dzielenie bylo albo zmiennoprzecinkowe, albo dopiero po wymnożeniu - no wiesz dzielenie int przez int jest dzieleniem tylko po całości.

1 użytkowników online, w tym zalogowanych: 0, gości: 1