Problema: Puedo ejecutar applets Java2D con appletviewer, pero no funcionan con mi navegador. La consola Java del navegador dice: defn not found for java/awt/Graphics2D.
- Necesitas descargar el Java Plugin 1.2 para ejecutar Swing y applets 2D en un
navegador. Puedes descargar el plugin aqu�.
http://java.sun.com/products/plugin/index.html Necesitar�s ajustar tus ficheros HTML para apuntar hacia el plugin. Aqu� tienes una p�gina con varios ejemplos, incluido un ejemplo 2D en la parte inferior:
Problema: �C�mo puedo escribir sobre una imagen anterior? Nuestro problema es que nuestro applet muestra una imagen de un mapa, pero cuando se dibuja una l�nea sobre el mapa, la l�nea sobreescribe el mapa.
- Deber�as intentar dibujar tu imagen dentro de un BufferedImage. Luego, dibuja el BufferedImage dentro de un contexto Graphics2D y luego dibuja la l�nea sobre el contexto Graphics2D un ejemplo de c�digo est� en Map_Line.java S�lo debes sustituir el nombre de tu imagen por images/bld.jpg.
Problema: �C�mo creo un BufferedImage desde un fichero gif o jpeg?
- Para crear un BufferedImage desde un gif o jpeg, debes cargar tu
fichero gif o jpeg en un objeto Image y luego
dibujar el Image en el objeto BufferedImage. El
siguiente fragmento de c�digo ilustra esto.
Image img = getImage("picture.gif"); int width = img.getWidth(this); int height = img.getHeight(this); BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D biContext = bi.createGraphics(); biContext.drawImage(img, 0, 0, null);
getImage es un m�todo Applet. Si tienes una aplicaci�n, puedes usar.
Image img = Toolkit.getDefaultToolkit().getImage("picture.gif");
BufferedImage.TYPE_INT_RGB es uno de los muchos tipos de BufferedImage. Para m�s informaci�n, puedes ver. http://java.sun.com/products/java-media/2D/forDevelopers/2Dapi/java/awt/image/BufferedImage.html
Necesitas crear un contexto Graphics2D para el BufferedImage usando el m�todo createGraphics. Luego, puedes usar el m�todo drawImage de la clase Graphics2D para dibujar la imagen dentro del buffer.
Problema: No puedo compilar el c�digo fuente de StrokeAndFill.java y Transform.java con jdk1.2beta4.
- La implementaci�n de TextLayout.getOutline se cambi� entre la beta4 y el JDK actual. La nueva implementaci�n s�lo toma un AffineTransform como argumento. Necesitas descargar el nuevo JDK para ejecutar el ejemplo.
Problema: �Existe alguna forma de especificar una f�rmula para una l�nea y dibujar un gr�fico de acuerdo a ella?
- Usar los segmentos de l�nea podr�a ser la forma m�s sencilla. Pudes representar los segmentos de l�nea rellenando un GeneralPath con ellos, o implementando Shape y PathIterator y leyendo los segmentos de l�nea 'bajo demanda' para guardar el almacenamiento intermedio del objeto GeneralPath. Observa que podr�as analizar tu f�rmula para determinar si corresponde con curvas c�bicas o cuadr�ticas.
Problema: �C�mo puedo a�adir texto a un campo gr�fico en una cierta posici�n?
- En el JDK 1.2 se a�adi� una clase llamada Graphics2D (ahora
llamado Java 2 SDK). Esta clase desciende de Graphics. Hay dos
m�todos drawString en Graphics2D que puedes
utilizar. Si quieres rotar el texto, deber�as usar Graphics2D en vez
de Graphics por lo que podr�s realizar rotaciones y otras
transformaciones en tu contexto Graphics2D.
El ejemplo Transform en el tutorial de 2D no usa drawString para dibujar texto. Lo que sucede es que se crea un TextLayout desde la cadena "Text." El TextLayout nos permite crear un objeto Shape a partir del String obteniendo su forma exterior. Introducimos est� Shape en el array de shapes, junto con las formas del rect�ngulo y de la elipse. Cuando dibujamos o rellenamos el Shape seleccionado del array de shapes, llamamos a g2.draw(Shape) o a g2.fill(Shape).
Podr�as usar drawString para dibujar el texto en el contexto Graphics2D y luego llamar a g2.rotate (�ngulo de rotaci�n). Esto rotar� todo lo que hayamos introducido dentro del contexto Graphics2D. Por eso, podr�amos resetear el contexto g2 cada vez que querramos transformar una imagen particular o una parte del texto en el contexto de forma separada de otras cadenas que hayan sido renderizadas en el contexto g2.
Problema: He leido su comentario en la parte inferior de Crear y Derivar fuentes sobre el bug 4155852. Este bug ha sido cerrado sin ninguna acci�n. �Es cierto que no se puede aplicar un estilo a una fuente como Arial?
- El problema es que la correspondencia fuente-a-estilo no funciona de forma apropiada
para fuentes f�sicas (como Arial o Palatino). S�lo se pueden aplicar estilos a las
fuentes l�gicas en este momento (como Dialog o SansSerif).
Como atajo hasta que se corrija el bug, podr�as hacer lo siguiente:
Font f = new Font("Palatino Bold", Font.PLAIN, 12);
en lugar de :
Font f = new Font("Palatino", Font.BOLD, 12);