gradientes são esteticamente agradáveis transições entre as cores . Java processa automaticamente diversos tipos de gradientes entre as cores especificadas pelo usuário . Você pode definir um gradiente como uma cor ao desenhar em Java para criar formas, texto e outros objetos com um efeito degradê. Se as classes de gradiente padrão do Java não são flexíveis o suficiente , você pode processar seus próprios gradientes em Java com loops aninhados . GradientPaint Classe
A classe GradientPaint fornece o método mais simples de criar um gradiente simples. O construtor de GradientPaint aceita dois pontos, duas cores e um valor booleano opcional. O gradiente resultante irá mudar a partir da primeira cor no primeiro ponto para a segunda cor no segundo ponto . Se você passar o valor booleano verdadeiro , o gradiente vai repetir o gradiente em qualquer direção passado os pontos de início e fim , a criação de um padrão cíclico . Um objeto GradientPaint que percorre azul e branco é instanciado como tal :
GradientPaint p = new GradientPaint ( new Point ( 0,0), Color.BLUE , new Point ( 100,100 ) , Color.WHITE , true) ;
LinearGradientPaint Classe
LinearGradientPaint é semelhante ao GradientPaint , mas pode criar um gradiente através de mais de duas cores e permite que os usuários definam a largura de cada seção colorida o gradiente deve ser . O construtor de LinearGradientPaint aceita dois pontos, uma série de carros alegóricos , uma variedade de cores e um valor opcional para indicar como o gradiente deve percorrer cores. Cada valor float corresponde a uma cor e indica em que ponto o gradiente que a cor deve ser predominante. Por exemplo, se o gradiente deve ser azul de um terço do caminho através de seu ciclo de 0.3f devem corresponder com a cor azul. Um objeto LinearGradientPaint que cria um gradiente através de azul , preto e branco , sem repetir usa o seguinte construtor :
float [ ] x = { 0.0f , 0.3f , 1.0f }; Cor [ ] c = {Color . PRETO, Color.BLUE , Color.WHITE }; LinearGradientPaint lp = new LinearGradientPaint ( new Point ( 0,0), new Point ( 100,100 ), x, c);
RadialGradientPaint Classe
RadialGradientPaint cria gradientes circulares que se estende a partir de um único ponto. O construtor tem um único ponto que representa o centro do círculo , de um valor de flutuação representando o raio do círculo , uma série de flutuadores para representar a taxa de variação entre cores e uma variedade de cores . Opcionalmente, ele pode aceitar um ponto de foco que desloca o centro do gradiente para criar gradientes elípticos e um valor para determinar como os ciclos de gradiente através de cores . Instanciar um objeto RadialGradientPaint é semelhante à criação de um LinearPaintObject :
float [ ] x = { 0.0f , 0.3f , 1.0f }; Cor [ ] c = { Color.BLACK , Color.BLUE , Color.WHITE }; LinearGradientPaint lp = new LinearGradientPaint ( new Point ( 50,50 ) , (float ) 25 , x, c);
Pintar um Gradient
Você pode criar mais elaborado gradientes personalizados em Java processando seu próprio gradiente através de loops aninhados . Em cada etapa do ciclo, criar uma nova cor com base em sua posição no circuito. No laço mais interno , desenhe um quadrado em uma posição definida por sua posição no circuito na cor atual . O código no exemplo abaixo cria um retângulo gradiente que começa no ponto (0,0) e é de 400 pixels de largura e 500 pixels de altura. Os valores r1 flutuador, g1 e b1 definir os r , G e B valores da cor inicial. Os valores de R2 , G2 e b2 definir os valores de R , G e B para a segunda cor . As primeiras pistas de laço a partir das iniciais x coordenar com a largura do retângulo. As pistas loop interno do y inicial de coordenadas para a altura do retângulo. Assim , no circuito interno , o ponto ( i , j ) corresponde sempre a um ponto diferente no rectângulo gradiente . Cada vez que os ciclos de programa através do loop aninhado, ele modifica o r e valores de b como uma fração dos atuais coordenada x ; quanto mais próximo o ponto é o valor inicial x , mais próximo dos valores R e B estarão com seus valores iniciais . O programa modifica o valor de b em relação à y coordenada atual , criando o mesmo efeito sobre um eixo diferente . Em seguida, cria uma nova cor a partir da r modificado, g e valores de b , e desenha um retângulo de exatamente um pixel de largura e altura no atual coordenar na nova cor
int x = 0; . Int y = 0; int width = 400; altura int = 500; flutuador r1 = 0; flutuar g1 = 0; flutuador b1 = 1; flutuador r2 = 1; flutuar g2 = 1; flutuador b2 = 0; flutuar rs = ( Math.abs r2 -r1 ); flutuar GP = Math.abs ( g2 -g1 ); flutuar bs = Math.abs (b2 -b1 ); for (int i = x , i < largura ; i + +) {for (int j = y , j < altura, j + +) {float r, g , b; if ( r1 < r2) {r = (( (RS) /largura ) * i ) + r1 ;} else { R = ( R1- ( (rs ) /largura ) * i );} if ( g1 < g2) { g = ((( gS) /largura ) * i ) + g1 ;} else { g = (g1 -( (GS) /largura ) * i) ;} if ( b1 < r2) {b = (( (BS) /largura ) * i ) + b1 ;} else { b = (B1- ( (BS) /largura ) * i );} Cor c = new Color (r, g , b, (float ) 0.5 ); g2d.setColor ( c); g2d.fillRect (i, j , 1, 1 );}}