Tecnología

Inicio

Java procesamiento de color degradado

Gradientes son estéticamente agradables transiciones entre colores. Java procesa automáticamente varios tipos de gradientes entre los colores especificados por el usuario. Se puede establecer un gradiente como un color mientras que el dibujo en Java para crear formas, 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.

Clase GradientPaint

La clase GradientPaint proporciona el método más sencillo de crear un gradiente simple. El constructor de GradientPaint acepta dos puntos, dos colores y un valor booleano opcional. El gradiente resultante se desplazará desde el primer color en el primer punto para el segundo color en el segundo punto. Si pasa el valor booleano verdadero, el gradiente se repetirá el gradiente en cualquier dirección más allá de los puntos de inicio y fin, la creación de un patrón cíclico. Un objeto GradientPaint que gira a través de azul y blanco se crea una instancia como tal:

GradientPaint p = new GradientPaint (nuevo punto (0,0), Color.BLUE, nuevo punto (100,100), Color.white, true);

Clase LinearGradientPaint

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 de color de la pendiente debe ser. El constructor de LinearGradientPaint acepta dos puntos, una serie de flotadores, una variedad de colores y un valor opcional para indicar cómo el gradiente debe desplazarse a través de los colores. Cada valor flotante corresponde a un color e indica en qué punto en el gradiente que el color debe ser predominante. Por ejemplo, si el gradiente debe ser azul un tercio del camino a través de su ciclo de 0.3f 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:

flotar [] = {x 0.0f, 0.3f, 1.0f};
De color [] = {c Color.BLACK, Color.Blue, Color.white};
LinearGradientPaint lp = new LinearGradientPaint (nuevo punto (0,0), nuevo punto (100,100), x, c);

Clase RadialGradientPaint

RadialGradientPaint crea gradientes circular que se extiende hacia fuera desde un único 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 la velocidad de cambio entre los colores y una gran variedad de colores. Opcionalmente, se puede aceptar un punto de enfoque que desplaza el centro de la pendiente para crear gradientes elípticas y un valor para determinar los ciclos de gradiente a través de los colores. Crear instancias de un objeto RadialGradientPaint es similar a crear un LinearPaintObject:

flotar [] = {x 0.0f, 0.3f, 1.0f};
De color [] = {c Color.BLACK, Color.Blue, Color.white};
LinearGradientPaint lp = new LinearGradientPaint (nuevo punto (50,50), (flotante) 25, x, c);

Pintura de un gradiente

Puede crear degradados personalizados más elaboradas 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 bucle en el color actual. El código en el ejemplo siguiente se crea un rectángulo de gradiente que comienza en el punto (0,0) y es de 400 píxeles de ancho y 500 píxeles de alto. El flotador valores R1, G1 y B1 definir los R, G y B los valores del color inicial. Los valores de r2, g2 y b2 definen los valores de R, G y B para el segundo color. Los primeros se ejecute la reproducción de las coordenadas x inicial a la anchura del rectángulo. Se ejecute el bucle interno de la coordenada y inicial a la altura del rectángulo. Así, en el bucle interior, el punto (i, j) corresponde siempre a un punto diferente en el rectángulo de gradiente. Cada vez que los ciclos del programa a través del bucle anidado, modifica los valores de R y B como una fracción de los actuales x de coordenadas; cuanto más cerca del punto es el valor inicial x, cuanto más cerca los valores de R y B estarán en sus valores iniciales. El programa modifica el valor de b con respecto a la actual y de coordenadas, creando el mismo efecto en un eje diferente. A continuación, crea un nuevo color a partir de los valores de R, G y B modificadas, y dibuja un rectángulo de exactamente un píxel de ancho y la altura a la corriente de coordenadas en el nuevo color.

int x = 0; int y = 0;
int width = 400; int height = 500;
flotador r1 = 0; flotador g1 = 0; flotador b1 = 1;
flotador r2 = 1; flotador g2 = 1; flotador b2 = 0;
flotar r E = Math.abs (r2-r1);
flotar GM = Math.abs (g2-g1);
flotar bS = Math.abs (b2-b1);
for (int i = x; i <ancho; i ++) {

for(int j = y; j &lt; height;j++){
float r,g,b;
if(r1&lt;r2){ r = (((rS)/width)*i)+r1;}
else{r = (r1-((rS)/width)*i);}
if(g1&lt;g2){g = (((gS)/width)*i)+g1;}
else{g = (g1-((gS)/width)*i);}
if(b1&lt;r2){b = (((bS)/width)*i)+b1;}
else{b = (b1-((bS)/width)*i);}
Color c = new Color(r,g,b,(float)0.5);
g2d.setColor(c);
g2d.fillRect(i, j, 1, 1);
}

}