Comment agrandir la taille de la police dans g.drawString("Hello World",10,10);
?
g.setFont(new Font("TimesRoman", Font.PLAIN, fontSize));
Où font size est un in. L'API de drawString indique que les paramètres x et y sont des coordonnées et n'ont rien à voir avec la taille du texte.
Dans la mesure où vous ne pouvez pas compter sur une police particulière disponible, une bonne approche consiste à dériver une nouvelle police de la police actuelle. Cela vous donne la même famille, poids, etc. juste plus grand ...
Font currentFont = g.getFont();
Font newFont = currentFont.deriveFont(currentFont.getSize() * 1.4F);
g.setFont(newFont);
Vous pouvez également utiliser 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);
La méthode TextAttribute offre souvent une flexibilité encore plus grande. Par exemple, vous pouvez définir le poids sur semi-gras, comme dans l'exemple ci-dessus.
Une dernière suggestion ... Puisque la résolution des moniteurs peut être différente et continue à augmenter avec la technologie, évitez d’ajouter un montant spécifique (tel que getSize () + 2 ou getSize () + 4) et envisagez de le multiplier. De cette manière, votre nouvelle police est toujours proportionnelle à la police "actuelle" (getSize () * 1.4), et vous n'éditerez pas votre code lorsque vous obtiendrez l'un de ces moniteurs Nice 4K.
Font myFont = new Font ("Courier New", 1, 17);
Le 17 représente la taille de la police. Une fois que vous avez cela, vous pouvez mettre:
g.setFont (myFont);
g.drawString ("Hello World", 10, 10);
J'ai une image située à ici , en utilisant le code ci-dessous. Je suis capable de contrôler tout ce que je voulais écrire sur le texte (par exemple, signature, marque transparente, texte avec différentes polices et tailles).
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();
}
}
exemple de code ci-dessous:
g.setFont(new Font("TimesRoman", Font.PLAIN, 30));
g.drawString("Welcome to the Java Applet", 20 , 20);