tipo - setfont java
Cómo cambiar el tamaño de fuente en drawString Java (5)
Debido a que no se puede contar con que una fuente en particular esté disponible, un buen enfoque es derivar una nueva fuente a partir de la fuente actual. Esto te da la misma familia, peso, etc. solo más grande ...
Font currentFont = g.getFont();
Font newFont = currentFont.deriveFont(currentFont.getSize() * 1.4F);
g.setFont(newFont);
También puede utilizar TextAttribute.
Map<TextAttribute, Object> attributes = new HashMap<>();
attributes.put(TextAttribute.FAMILY, currentFont.getFamily());
attributes.put(TextAttribute.WEIGHT, TextAttribute.WEIGHT_SEMIBOLD);
attributes.put(TextAttribute.SIZE, (int) (currentFont.getSize() * 1.4));
myFont = Font.getFont(attributes);
g.setFont(myFont);
El método TextAttribute a menudo da una flexibilidad aún mayor. Por ejemplo, puede establecer el peso en semi-negrita, como en el ejemplo anterior.
Una última sugerencia ... Debido a que la resolución de los monitores puede ser diferente y continúa aumentando con la tecnología, evite agregar una cantidad específica (como getSize () + 2 o getSize () + 4) y considere la posibilidad de multiplicar. De esta manera, su nueva fuente es siempre proporcional a la fuente "actual" (getSize () * 1.4), y no estará editando su código cuando obtenga uno de esos agradables monitores 4K.
Cómo aumentar el tamaño de la fuente en g.drawString("Hello World",10,10);
?
Ejemplo de código a continuación:
g.setFont(new Font("TimesRoman", Font.PLAIN, 30));
g.drawString("Welcome to the Java Applet", 20 , 20);
He localizado una imagen here , usando el código de abajo. Soy capaz de controlar cualquier cosa en el texto que quería escribir (por ejemplo, firma, marca de agua transparente, texto con diferente fuente y tamaño).
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.font.TextAttribute;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import javax.imageio.ImageIO;
public class ImagingTest {
public static void main(String[] args) throws IOException {
String url = "http://images.all-free-download.com/images/graphiclarge/bay_beach_coast_coastline_landscape_nature_nobody_601234.jpg";
String text = "I am appending This text!";
byte[] b = mergeImageAndText(url, text, new Point(100, 100));
FileOutputStream fos = new FileOutputStream("so2.png");
fos.write(b);
fos.close();
}
public static byte[] mergeImageAndText(String imageFilePath,
String text, Point textPosition) throws IOException {
BufferedImage im = ImageIO.read(new URL(imageFilePath));
Graphics2D g2 = im.createGraphics();
Font currentFont = g2.getFont();
Font newFont = currentFont.deriveFont(currentFont.getSize() * 1.4F);
g2.setFont(newFont);
Map<TextAttribute, Object> attributes = new HashMap<>();
attributes.put(TextAttribute.FAMILY, currentFont.getFamily());
attributes.put(TextAttribute.WEIGHT, TextAttribute.WEIGHT_SEMIBOLD);
attributes.put(TextAttribute.SIZE, (int) (currentFont.getSize() * 2.8));
newFont = Font.getFont(attributes);
g2.setFont(newFont);
g2.drawString(text, textPosition.x, textPosition.y);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(im, "png", baos);
return baos.toByteArray();
}
}
Font myFont = new Font ("Courier New", 1, 17);
El 17 representa el tamaño de letra. Una vez que tengas eso, puedes poner:
g.setFont (myFont);
g.drawString ("Hello World", 10, 10);
g.setFont(new Font("TimesRoman", Font.PLAIN, fontSize));
Donde fontSize es un int. La API para drawString establece que los parámetros x e y son coordenadas y no tienen nada que ver con el tamaño del texto.