Java奇怪的矩形渲染

时间:2015-08-18 14:32:48

标签: java graphics rendering

我想问一下它是不是一个bug。

当我使用fillRect方法时,它会渲染一个比方法drawRect小的像素矩形。

还有其他人和我有同样的问题吗? :( 或者确实存在解决此问题的方法吗?

以下是一个小样本代码:

public Frame(){
    super("Sample rectangle");
    setExtendedState(this.getExtendedState() | JFrame.MAXIMIZED_BOTH);
    setUndecorated(true);       
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLocationRelativeTo(null);
    setVisible(true);
}

public void paint(Graphics g){
    g.setColor(Color.BLACK);
    g.fillRect(0,0, getWidth()-1, getHeight()-1);

    g.setColor(Color.RED);
    //g.drawRect(0,0, getWidth()-1, getHeight()-1);
    //wrap.graphics(g);
}

2 个答案:

答案 0 :(得分:1)

此行为完全与相关Javadoc

中所述相同
  

<强> fillRect   填充指定的矩形。矩形的左右边缘位于x和x +宽度 - 1.顶部和底部边缘位于y和y +高度 - 1

     

<强>的drawRect   绘制指定矩形的轮廓。矩形的左右边缘为x和x +宽度。顶部和底部边缘位于y和y +高度。

答案 1 :(得分:1)

根据Javadoc(强调我的):

drawRect

  

绘制指定矩形的轮廓。矩形的左右边缘位于x和 x +宽度。顶部和底部边缘位于y和 y +高度。使用图形上下文的当前颜色绘制矩形。

fillRect

  

填充指定的矩形。矩形的左右边缘位于x和 x +宽度 - 1 。顶部和底部边缘位于y和 y +高度 - 1 。得到的矩形覆盖宽度为像素高的像素宽度的区域宽度。使用图形上下文的当前颜色填充矩形。