2012-11-05 46 views
2

我想使用paintComponent(..)方法打印一些文本。paintComponent()方法中的消除鋸齒

@Override 
    protected void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    g.setColor(Color.red); 
    g.drawString("Hello world", 10, 10); 
} 

但是文字有點鋸齒。 如何在此方法中強制使用[anti-aliasing]進行文本繪製?

謝謝。

+3

你的意思抗鋸齒,而不是雙緩衝? – mikera

+0

@mikera 是的。消除鋸齒 – Sanjeev

回答

3

您可以通過設置雙緩衝:

class MyPanel extends JPanel { 
    public MyPanel() { 
     super(true);//set Double buffering for JPanel 
    } 
} 

或直接致電JComponent#setDoubleBuffered(..)

您還可以設置RenderingHint S表示Graphics2D對象,如抗鋸齒文本抗鋸齒以改善揮杆畫質:

@Override 
    protected void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    Graphics2D graphics2D = (Graphics2D) g; 

    //Set anti-alias! 
    graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
      RenderingHints.VALUE_ANTIALIAS_ON); 

    // Set anti-alias for text 
    graphics2D.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, 
      RenderingHints.VALUE_TEXT_ANTIALIAS_ON); 

    graphics2D.setColor(Color.red); 
    graphics2D.drawString("Hello world", 10, 10); 
} 
+0

感謝您的幫助:) – Sanjeev