Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java矩形渲染_Java_Graphics_Rendering - Fatal编程技术网

Java矩形渲染

Java矩形渲染,java,graphics,rendering,Java,Graphics,Rendering,我想问一下这是不是一个错误 当我使用fillRect方法时,它会渲染一个比drawRect方法小一个像素的矩形 其他人有和我一样的问题吗( 或者是否存在解决此问题的方法 下面是一个小示例代码: public Frame(){ super("Sample rectangle"); setExtendedState(this.getExtendedState() | JFrame.MAXIMIZED_BOTH); setUndecorated(true);

我想问一下这是不是一个错误

当我使用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);
}

这种行为完全如相关章节所述:

fillRect 填充指定的矩形。矩形的左边缘和右边缘位于x和x+宽度-1处。上边缘和下边缘位于y和y+高度-1处

drawRect 绘制指定矩形的轮廓。矩形的左边缘和右边缘在x和x+宽度处。上边缘和下边缘在y和y+高度处

根据(矿山)的重点:

drawRect

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

fillRect

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


哈哈,这太糟糕了。为什么我要画一个宽度为-1、高度为-1的矩形呢?它甚至不适用于边框,因为对于边框来说,它应该是宽度为-2、高度为-2、X+1和Y+1。有没有办法画出填充矩形的正确宽度和高度?我的意思是,不用像I*iot那样写+1,在宽度和高度参数中添加一个。如果你的意思是:填充与绘图完全相同的区域,那么当然:在调用fillRect时,只需在宽度和高度上加1!这是我最新的评论。对不起:(有没有一种方法可以绘制填充矩形的正确宽度和高度?当前的绘制方法是正确的。它按照指定的方式工作。我相信它的设计是为了方便您绘制一个表格,其中两个相邻的单元格将具有单像素轮廓(重叠轮廓)。如果我想绘制一个表格,那么我将绘制它
fillRect。)(x,y,width,height)
然后
drawRect(x-1,y-1,width+2,height+2)
:S.我想我最好转到C和Allegro.Java开始有点让我生气了:(是的,你也可以这么做:)怎么做?drawRect绘制x+width和fillRect x+width-1只有一个像素的差异:(