2016-07-04 2 views
2

Dans Paint XP ou Paint Windows 8, lorsque vous écrivez du texte, le programme augmente automatiquement la qualité de la police (au moins pour les imprimantes fiscales). Je voudrais savoir comment faire avec le même code Java ci-dessous.Comment augmenter la qualité de la police sur la méthode drawString de Graphics?

D'abord, regardez cette image pour voir ce que je veux dire:

Text Quality Example

BufferedImage image = ImageIO.read(new File("blankdocument.bmp")); 
Graphics g = ((BufferedImage) image).getGraphics(); 

Font helvetica = new Font("Lucida Sans Unicode", Font.PLAIN, 13); 
g.setColor(Color.black); 
g.setFont(helvetica); 

g.drawString("TEXT WRITING EXAMPLE.", 5, 10); 
ImageIO.write(image, "PNG", new File("testx.PNG")); 
image.flush(); 

Répondre

2

Vous pouvez activer l'anti-aliasing. De Controlling Rendering Quality,

Pour définir ou modifier les indices de rendu d'attributs dans le contexte Graphics2D, construire un objet RenderingHints et passer dans Graphics2D en utilisant la méthode setRenderingHints. Si vous voulez juste définir un indice, vous pouvez appeler Graphics2DsetRenderingHint et spécifier la paire clé-valeur pour le conseil que vous voulez définir. (Les paires clé-valeur sont définies dans la classe RenderingHints.)

Graphics2D g2 = (Graphics2D) g; 
RenderingHints rh = new RenderingHints(RenderingHints.KEY_TEXT_ANTIALIASING, 
      RenderingHints.VALUE_TEXT_ANTIALIAS_ON); 
g2.setRenderingHints(rh); 
+0

Merci, très bien Elliott. –

+0

un moyen de l'augmenter? xD –

+0

Je trouve l'atributte "_LCD_HRGB" (en remplacement: RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB), bien, plus de questions, merci! –

0

Vous devez activer Anti-aliasing. L'anti-aliasing dans Java peut être activé comme suit:

// this is the same as getGraphics() but returns a Graphics2D instead. 
Graphics2D g2 = image.createGraphics(); 

RenderingHints rh = new RenderingHints(
    RenderingHints.KEY_TEXT_ANTIALIASING, 
    RenderingHints.VALUE_TEXT_ANTIALIAS_ON); 
g2.setRenderingHints(rh);