gradienter estetiskt tilltalande övergångar mellan färgerna . Java bearbetar automatiskt flera typer av övertoningar mellan användaren angiven färger . Du kan ställa in en lutning som en färg medan du ritar i Java för att skapa former , text och andra objekt med en gradient effekt . Om Javas standard lutning klasser är inte tillräckligt flexibel , kan du bearbeta dina egna övertoningar i Java med nästlade loopar . GradientPaint Klass
GradientPaint klassen ger den enklaste metoden för att skapa en enkel gradient . GradientPaint konstruktor accepterar två poäng , två färger och en valfri booleskt värde . Den resulterande gradienten kommer att skifta från den första färgen på den första punkten till den andra färgen på den andra punkten . Om du passerar det booleska värdet true , kommer gradienten upprepa gradient i endera riktningen förbi start-och slutpunkter , skapa ett cykliskt mönster . En GradientPaint objekt som går igenom blått och vitt instansieras som sådan :
GradientPaint p = new GradientPaint ( new Point ( 0,0 ) , Color.BLUE , new Point ( 100,100 ) , Color.white , true ) , Addera LinearGradientPaint Class
LinearGradientPaint liknar GradientPaint , men det kan skapa en gradient genom mer än två färger och det tillåter användare att definiera hur stort varje färgad avsnitt gradienten bör vara. LinearGradientPaint konstruktor accepterar två punkter , en samling av flottar , en mängd färger och ett valfritt värde som anger hur övertoningen ska gå igenom färger . Varje float värde motsvarar en färg och anger vid vilken punkt i gradienten att färgen ska vara dominerande . Till exempel bör om gradienten ska vara blå en tredjedel av vägen genom dess cykel 0.3f överensstämmer med färgen blå. En LinearGradientPaint objekt som skapar en gradient genom blått , svart och vitt utan att upprepa använder följande konstruktorn :
float [ ] x = { 0.0f , 0.3f , 1.0f }; Color [ ] c = { Color . BLACK , Color.BLUE , Color.white }; LinearGradientPaint lp = ny LinearGradientPaint ( new Point ( 0,0 ) , new Point ( 100,100 ) , x , c ) ;
RadialGradientPaint Class
RadialGradientPaint skapar cirkulära gradienter sträcker sig från en enda punkt . Dess konstruktorn tar en enda punkt som representerar mitten av cirkeln , ett flyttal som representerar radien på den cirkel , en samling av flottar för att representera förändringstakten mellan färger och en mängd färger . Eventuellt kan den godta en fokuspunkt som skiftar mitten av övertoningen att skapa elliptiska övertoningar och ett värde för att bestämma hur lutningen cykler genom färger . Exemplifiera en RadialGradientPaint objekt liknar att skapa en LinearPaintObject :
float [ ] x = { 0.0f , 0.3f , 1.0f }; Color [ ] c = { Color.BLACK , Color.BLUE , Color.white }; LinearGradientPaint lp = ny LinearGradientPaint ( new Point ( 50,50 ) , ( float ) 25 , x , c ) ;
Måla en Gradient
Du kan skapa mer avancerade skräddarsydda gradienter i Java genom att bearbeta din egen gradient genom nästlade loopar . Vid varje steg i loopen , skapa en ny färg baserad på din position i slingan . I den innersta slingan , rita en fyrkant på en position som definieras av din position i slingan i den aktuella färgen . Koden i exemplet skapar nedan en gradient rektangel som börjar vid den punkt (0,0) och är 400 pixlar bred och 500 pixlar hög . Flottören värderar r1 , g1 och b1 definierar R-, G -och B -värden i den ursprungliga färgen . Värdena r2 , g2 och b2 definierar R-, G -och B -värden för den andra färgen . Den första slingan löper från den initiala x-koordinaten till bredden av rektangeln . Den inre slingan löper från den initiala y-koordinaten till rektangelns höjd . Således, i den inre slingan , motsvarar punkten ( i, j) alltid till en annan punkt i gradienten rektangel. Varje gång programmet kretsar genom nästlade loop , modifierar det r och b-värden som en del av den nuvarande x -koordinat , ju närmare punkten är att den initiala x värde , desto närmare r och värderingar B blir till deras ursprungliga värden . Programmet modifierar b-värdet i förhållande till den aktuella y-koordinaten , skapa samma effekt på en annan axel . Det skapar sedan en ny färg från den modifierade r, g och b-värden , och drar en rektangel av exakt en pixel i bredd och höjd på den aktuella koordinaten i den nya färgen
int x = 0; . Int y = 0 ; int width = 400 ; int height = 500 ; float r1 = 0; float g1 = 0; float b1 = 1 ; float r2 = 1 ; float g2 = 1 ; float b2 = 0; float rS = Math.abs ( r2 - r1 ) , float gS = Math.abs ( g2 - g1 ) , float bS = Math.abs ( B2 - B1) , for (int i = x , i