2011-10-06 13 views
5

Ahora siento que he estado buscando en Internet para descubrir cómo agregar un borde en un texto, así que decidí preguntar aquí, ya que ustedes siempre saben la respuesta.Borde grueso de la cadena dibujada

Entonces, ¿cómo puedo, en java, dibujar un borde de aproximadamente 2 píxeles alrededor de cada letra en una cadena dibujada en un elemento Graphics2D?

De esta manera:
Text with 2px border


Gracias de antemano.

Respuesta

6

encontré una solución simple en Javaworld para la elaboración de un esquema de texto en Java:

g.setColor(Color.red); 
g.drawString("Outline", ShiftWest(x, 1), ShiftNorth(y, 1)); 
g.drawString("Outline", ShiftWest(x, 1), ShiftSouth(y, 1)); 
g.drawString("Outline", ShiftEast(x, 1), ShiftNorth(y, 1)); 
g.drawString("Outline", ShiftEast(x, 1), ShiftSouth(y, 1)); 
g.setColor(Color.yellow); 
g.drawString("Outline", x, y); 

En esencia, se dibuja la misma cadena se movió en cada sentido primero antes de dibujar la cadena en el color deseado Esto funciona bien para un esquema de un píxel, pero no se adapta bien a contornos gruesos ya que puede haber espacios en las esquinas si repites el cambio varias veces.

Otra solución sería usar una transformación y getOutline() que es un método de la clase TextLayout. Se puede encontrar un ejemplo para hacer un esquema here.

+1

¡Solución muy simple! –

+0

No del todo allí ... se pierde el ARRIBA, ABAJO, IZQUIERDA y DERECHA, pero es una solución muy buena. Voy a usarlo. – marcolopes

+0

+1 para TextLayout.getOutline() – Andrea

Cuestiones relacionadas