java - paintComponent() 方法中的抗锯齿

标签 java string swing graphics paintcomponent

我想使用 paintComponent(..) 方法打印一些文本。

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

但是文字有点锯齿。 你怎么能用这种方法强制使用[抗锯齿]绘制文本?

谢谢。

最佳答案

您可以通过以下方式设置双缓冲:

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

或直接调用 JComponent#setDoubleBuffered(..) .

您还可以为Graphics2D 对象设置RenderingHint,例如抗锯齿文本抗锯齿 以通过以下方式提高 Swing 绘画质量:

  @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);
}

关于java - paintComponent() 方法中的抗锯齿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13236797/

相关文章:

java - 无法使用 Ubuntu Oracle Java 8 运行 IntelliJ IDEA CE 12

PHP:计算字符串中的数学函数 f(x)

java - 用swing绘制图形的好方法是什么?

java - 如何为 jframe 设置标题?

java - C/C++ 中的 MQ JMS 主题等价物

Java从字符串中删除公钥页眉和页脚

c++ - 无法解释的无法在模板中比较 C++ 中的字符串

java - 想要将 JPanel 与 Java 中框架的左侧对齐

java - 使用 JAXB 时是否总是需要 ObjectFactory 类?

php - 如何在具有空效果的php中连接各种字符串