Animacja kolorem

Pokażę przykład, w którym zmiana koloru rysunku sprawi wrażenie ruchu.
Każda klatka prezentowanej animacji jest dokładnią taką samą figurą tzn absolutnie nic się w niej nie zmienia, za wyjątkiem użytego koloru.

Zajmę się "ruchem" dolnego paska, zasada dla innych części sceny jest taka sama.

1. przygotuję 4 gradienty i zapamiętam je w tablicy
2. narysuję pasek
3. w tablicy palet przesunę kolory :
4. klatka animacji to sekwencja : przesun();   pasek();

Oto zestaw potrzebnych procedur:

void gradienty() 
{ 
  for(int i=0;i<64;i++) 
  { 
    pal[i]=new Color(100+2*i,0,0); 
    pal[i+64]=new Color(0,100+2*i,0); 
    pal[i+128]=new Color(0,0,100+2*i); 
    pal[i+192]=new Color(100+2*i,100+2*i,100+2*i);
  } 
}

W przykładzie posługuję się czterema gradientami: czerwonym, zielonym, niebieskim i szarym, każdy o długości 64.

Poniżej procedury potrzebne do "klatki" animacyjnej:


void pasek(Graphics g) 
{ 
  double poz=-9.2; 
  int kolor=0; 
  lo28.pkt p= new lo28.pkt(-7,poz); 
  lo28.pkt k=new lo28.pkt(-7,poz-1); 

  while(p.x<7) 
  { 
    g.setColor(pal[kolor]); 
    lo28.linia(g,p,k); 
    p.x+=0.05; 
    k.x+=0.05; 
    kolor++; 
    if(kolor>255)kolor=0; 
  } 
}
void przesun() 
{ 
 pal[0]=pal[255]; 
 for(int i=255; i>0 ; i--) 
   pal[i]=pal[i-1]; 
}