degradados son agradables estéticamente transiciones entre colores . Java procesa automáticamente varios tipos de gradientes entre los colores especificados por el usuario . Puede establecer un gradiente como un color , mientras que el dibujo en Java para crear formas , el texto y otros objetos con un efecto de degradado . Si las clases de gradiente por defecto de Java no son lo suficientemente flexibles , puede procesar sus propios gradientes en Java con bucles anidados . GradientPaint Clase
La clase GradientPaint proporciona el método más sencillo de crear un gradiente simple. Constructor de GradientPaint acepta dos puntos , dos colores y un valor booleano opcional. El gradiente resultante pasará de la primera de color en el primer punto al segundo color en el segundo punto . Si pasa el valor true , el gradiente se repita la pendiente en cualquier dirección más allá del punto inicial y final , la creación de un patrón cíclico . Un objeto GradientPaint que los ciclos a través de azul y blanco se instancia como tal :
GradientPaint p = new GradientPaint ( nuevo punto ( 0,0) , Color.BLUE , nuevo punto ( 100,100 ) , Color.White , true) ;
LinearGradientPaint Clase
LinearGradientPaint es similar a GradientPaint , pero puede crear un gradiente a través de más de dos colores y permite a los usuarios definir el ancho de cada sección coloreada la pendiente debe ser. Constructor de LinearGradientPaint acepta dos puntos , una gran variedad de carrozas , una gran variedad de colores y un valor opcional para indicar cómo el gradiente debe pasar por colores. Cada valor flotante corresponde a un color y se indica en qué punto de la pendiente que el color debe ser predominante. Por ejemplo, si la pendiente debe ser de color azul de un tercio del camino a través de sus 0,3 f ciclo debe corresponder con el color azul . Un objeto LinearGradientPaint que crea un gradiente a través de azul, blanco y negro sin repetir utiliza el siguiente constructor :
float [ ] x = { 0.0f , 0,3 f , 1.0f } ; color [ ] c = {Color . NEGRO , Color.BLUE , Color.White } ; LinearGradientPaint lp = new LinearGradientPaint ( nuevo punto ( 0,0) , nuevo punto ( 100,100 ) , x, c ) ;
RadialGradientPaint Class
RadialGradientPaint crea gradientes circulares que se extienden a partir de un solo punto. Su constructor toma un único punto que representa el centro del círculo, un valor flotante que representa el radio del círculo, una serie de flotadores para representar el tipo de cambio entre los colores y una gran variedad de colores. Opcionalmente , se puede aceptar un punto de enfoque que desplaza el centro del degradado para crear degradados elípticos y un valor para determinar cómo los ciclos de gradiente a través de colores . Crear instancias de un objeto RadialGradientPaint es similar a crear un LinearPaintObject :
float [ ] x = { 0.0f , 0,3 f , 1.0f } ; color [ ] = { c Color.BLACK , Color.BLUE , Color.White } ; LinearGradientPaint lp = new LinearGradientPaint ( nuevo punto ( 50,50 ) , (float ) 25 , x, c ) ;
Pintar un gradiente
puede crear más elaborado personalizado gradientes en Java mediante el procesamiento de su propio gradiente a través de bucles anidados. En cada paso del bucle, crear un nuevo color en función de su posición en el bucle. En el bucle más interior , dibujar un cuadrado en una posición definida por su posición en el circuito en el color actual. El código en el ejemplo siguiente se crea un rectángulo gradiente que comienza en el punto ( 0,0) y se encuentra a 400 píxeles de ancho por 500 píxeles de alto . El flotador los valores r1 , g1 y b1 definen los valores del color inicial r , g , y b . Los valores de r2 , g2 y b2 definen los valores de R , G y B para el segundo color. El primer bucle se extiende desde la coordenada x inicial a la anchura del rectángulo . El bucle interno se extiende desde la coordenada inicial y a la altura del rectángulo . Por lo tanto , en el bucle interior , el punto ( i, j ) siempre corresponde a un punto diferente en el rectángulo gradiente . Cada vez que los ciclos de programación a través del bucle anidado , modifica el r y los valores de b como una fracción de la corriente de coordenadas x , cuanto más cerca del punto es el valor inicial x , más cerca de la r y b valores serán los valores iniciales . El programa modifica el valor de b en relación con la corriente de coordenada y , creando el mismo efecto en un eje diferente . A continuación, crea un nuevo color de la modificación R, G y valores de b , y dibuja un rectángulo de exactamente un píxel de ancho y la altura a la coordenada actual en el nuevo color
int x = 0 ; . Int y = 0 ; int width = 400, int altura = 500 ; float r1 = 0 ; float g1 = 0 ; float b1 = 1 ; float r2 = 1 ; float g2 = 1 ; float b2 = 0 ; float r = Math.abs ( r2 -r1 ) ; float GM = Math.abs ( g2 -g1 ) ; float bS = Math.abs ( b2 -b1 ) ; for (int i = x , i < ancho , i + +) {for (int j = y ; j < altura ; j + + ) { flotador r , g , b ; si ( r1 < r2 ) { r = ( ( (RS) /anchura ) * i ) + r1 } else { r = ( r1 - ( ( rS ) /ancho) * i ) ;} if ( g1 < g2 ) { g = (( (GS ) /ancho) * i ) + g1 ;} else { g = ( g1 -( (GS ) /ancho) * i ) ;} if ( b1 < r2 ) { b = ((( BS) /ancho) * i ) + b1 ;} else { b = ( b1 -(( BS) /ancho) * i ) ;} color c = new color (r, g , b, (float ) 0.5 ) ; g2d.setColor ( c ) ; g2d.fillRect (i, j, 1 , 1 ) ;} }