Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Java Spracovanie Color Gradient

Prechody sú esteticky príjemné prechody medzi farbami . Java automaticky spracováva niekoľko druhov prechodov medzi užívateľom špecifikovanej farby . Môžete nastaviť sklon ako farba pri kreslení v Jave vytvoriť tvary , text a ďalšie objekty s efekt prechodu . Ak počiatočnej triedy gradientu Java nie sú dostatočne flexibilné , môžete spracovať svoje vlastné prechody v jazyku Java s vnorenými slučkami . GradientPaint Trieda

Trieda GradientPaint poskytuje najpriamejšou spôsob vytvorenia jednoduchého prechodu . GradientPaint konstruktoru prijíma dva body , dve farby a voliteľný logickú hodnotu . Výsledný sklon sa posunie z prvej farby na prvom mieste na druhej farby na druhom mieste . Ak odovzdáte boolean hodnotu true , bude sklon opakovať gradientu v oboch smeroch okolo počiatočného a koncového bodu , vytvorí cyklický vývoj . GradientPaint objekt , ktorý cykluje modrej a bielej farby je inštancia ako napríklad :

GradientPaint p = new GradientPaint ( nový bod ( 0,0 ) , Color.BLUE , nový bod ( 100,100 ) , Color.WHITE , true ) ;
LinearGradientPaint Trieda

LinearGradientPaint je podobný GradientPaint , ale môže vytvoriť prechod cez viac ako dvoch farbách a umožňuje užívateľom definovať , ako široký každú farebnú časť prechodu by mal byť . LinearGradientPaint konstruktoru prijíma dva body , rad plavákov , rad farieb a voliteľnou hodnotu uviesť , ako sklon by mal prechádzať farieb . Každá hodnota float zodpovedá farbe a ukazuje , na akom mieste v prechode by mal byť prevládajúci, že farba . Napríklad , v prípade , že prechod by mal byť modrý jedna tretina , ako prostredníctvom cyklu 0.3f by mala zodpovedať farbe modrej . LinearGradientPaint objekt , ktorý vytvára prechod cez modrú , čiernu a bielu bez opakovania používa nasledujúce konštruktor :

float [ ] x = { 0.0f , 0.3f , 1.0f } ; Farba [ ] c = { farba . BLACK , Color.BLUE , Color.WHITE } ; LinearGradientPaint lp = new LinearGradientPaint ( nový bod ( 0,0 ) , nový bod ( 100,100 ) , x , c) ;
RadialGradientPaint trieda

RadialGradientPaint vytvára kruhové prechody predlžuje z jedného miesta . Jej konštruktor prijíma jeden bod predstavujúci stred kruhu , hodnotu float predstavujúce polomer kruhu , rad plavákov reprezentovať rýchlosť zmeny medzi farbami a mnohých farbách . Voliteľne môže prijať zaostrovací bod , ktorý posunie stred prechodu na vytvorenie eliptické prechody a hodnotu , ktorá určuje , ako sa prechodu cykly prostredníctvom farieb . Konkretizácia RadialGradientPaint objekt je podobné vytváranie LinearPaintObject :

float [ ] x = { 0.0f , 0.3f , 1.0f } ; Farba [ ] C = { Color.BLACK , Color.BLUE , Color.WHITE } ; LinearGradientPaint lp = new LinearGradientPaint ( nový bod ( 50,50 ) , ( float ) 25 , x , c) ;
Maľovanie Gradient

môžete vytvoriť viac rozpracovať upravené prechody v Jave spracovaním svoj ​​vlastný prechod cez vnorených slučiek . Na každom kroku v slučke , vytvorte novú farbu na základe vašej pozícii v slučke . V najvnútornejšie slučke , nakresliť štvorec na pozíciu definované vašej pozícii v slučke v aktuálnom farbe . Kód v nasledujúcom príklade vytvorí prechod obdĺžnik , ktorý začína v bode ( 0,0 ) a je 400 pixelov široký a 500 pixelov vysoký . Hodnoty float r1 , g1 a b1 definovať r, g a b hodnoty pôvodnej farby . Hodnoty r2 , g2 a b2 definovať r, g a b hodnoty pre druhej farby . Prvá prebieha slučka z počiatočných X na šírku obdĺžnika . Vnútorná slučka prebieha od počiatočného súradnicu y na výšku obdĺžnika . Teda , vo vnútornej slučke , bod ( i , j ) , vždy zodpovedá inému bodu prechodu obdĺžnika . Zakaždým , keď sa cykly programu cez vnorené slučky , upraví r a b hodnoty ako zlomok súčasných x - ovú súradnicu , že čím bližšie je bod na počiatočnú hodnotu x , bližšie k r a b hodnoty budú na ich počiatočné hodnoty . Program upraví hodnota b vzhľadom k aktuálnej súradnicu y , vytvára rovnaký účinok na iné osi . To potom vytvára novú farbu z modifikovaného R , G a B hodnoty a nakreslí obdĺžnik presne jeden pixel na šírku a výšku v aktuálnej súradnice v novej farbe

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 < šírky ; i + + ) { for ( int j = y , j < výška , j + + ) { float r, g , b , ak je ( r1 < r2 ) { r = ( ( ( RS ) /šírka ) * i ) + r1 ; } else { r = ( r1 - ( ( rS ) /šírka ) * i ) ; } if ( g1 < g2 ) { g = ( ( ( GS ) /šírka ) * i ) + g1 ; } else { g = ( g1 - ( ( GS ) /šírka ) * i ) ; } if ( b1 < r2 ) { b = ( ( ( BS ) /šírka ) * i ) + b1 ; } else { b = ( b1- ( ( BS ) /šírka ) * i ) ; } Farba c = new Color (r , g , b , ( float ) , 0,5 ) ; g2d.setColor ( c ) ; g2d.fillRect ( i, j , 1 , 1 ) ; } }

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené