Specialeffekter och spelutveckling
i Java(TM) - Appleten Gradient
import java.applet.*;
import java.awt.*;
import java.awt.image.*;
public class gradient extends Applet {
//"gradientimage" kommer att hålla reda på
//bilden som vi skapar.
Image gradientimage=null;
public void init()
{
//Vi måste nu veta appletskärmens storlek.
Dimension d;
d=size();
//Vi börjar med att skapa en array som
//är lika stor som skärmen. Den kommer
//att innehålla färgvärdena som vi sedan
//använder för att skapa en bild.
int pixels[]=new int[d.width*d.height];
int red,blue,colorvalue;
//Följande FOR-slinga sveper igenom
//bilden från vänster till höger.
//Den fyller upp arrayen med
//pixelvärden som blandas mellan
//rött och blått (rött längst till vänster
//och blått längst till höger.
for (int x=0; x < d.width; x++)
{
//Räkna ut ett värde på röd- och blå-
//komponenterna beroende på var
//positionen på "x" är. ((d.width-x)/d.width)
//samt (x/d.width) används som faktorer.
red=(255*(d.width-x))/d.width;
blue=(255*x)/d.width;
//Dessa två värden är
//komponenter för färgvärdet, som vi
//bygger upp tillsammans med alfa-kanalen
//(0xff000000). Observera att röd-komponenten
//måste skiftas 2 bytes åt vänster så att
//den hamnar på rätt plats. Detta gör vi genom
//att multiplicera två gånger med 256.
//Blå-komponenten ÄR redan i rätt plats, så
//där behöver vi inte multiplicera.
colorvalue=0xff000000+(red*256*256)+blue;
//Följande FOR-slinga kommer att
//svepa igenom bilden upp och ner.
for (int y=0; y < d.height; y++)
{
//Kom ihåg att x+y*d.width är
//positionen för pixeln som
//skall sättas eller läsas
//av.
pixels[x+y*d.width]=colorvalue;
}
}
//Nu kan vi skapa ett MemoryImageSource-
//objekt.
MemoryImageSource imgsrc=new MemoryImageSource(d.width,d.height,pixels,0,d.width);
//Med createImage() skapar vi bilden som
//man kan använda i paint() metoden.
gradientimage=createImage(imgsrc);
}
public void paint(Graphics g)
{
//Vi måste först kolla att gradientimage
//inte är NULL innan vi ritar ut den.
if (gradientimage!=null) g.drawImage(gradientimage,0,0,this);
}
}
|
 |  |
|