重新绘制椭圆,JAVA Swing/AWT

重新绘制椭圆,JAVA Swing/AWT,java,swing,awt,repaint,Java,Swing,Awt,Repaint,我知道java repaint()方法可以重新绘制整个屏幕,也可以重新绘制(int,int,int,int,int)屏幕的某个部分,但是我有一个椭圆,我正在屏幕上移动。有没有办法只重新绘制包含椭圆的空间?还是一种获得椭圆所占空间的方法?谢谢。如果您正在尝试重新绘制包含椭圆的屏幕部分,您可以执行以下操作: int ovalposX = 0; int ovalposY = 0; int ovalwidth = 10; int ovalheight = 10; public void paintCom

我知道java repaint()方法可以重新绘制整个屏幕,也可以重新绘制(int,int,int,int,int)屏幕的某个部分,但是我有一个椭圆,我正在屏幕上移动。有没有办法只重新绘制包含椭圆的空间?还是一种获得椭圆所占空间的方法?谢谢。

如果您正在尝试重新绘制包含椭圆的屏幕部分,您可以执行以下操作:

int ovalposX = 0;
int ovalposY = 0;
int ovalwidth = 10;
int ovalheight = 10;
public void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawOval(ovalposX,ovalposY,ovalwidth,ovalheight)
}
public void redraw(){
    repaint(ovalposX, ovalposY, ovalwidth, ovalheight);
}

(如果这是错误的,我非常抱歉,这是我的第一篇帖子)

如果您试图重新绘制包含椭圆的屏幕部分,您可以执行以下操作:

int ovalposX = 0;
int ovalposY = 0;
int ovalwidth = 10;
int ovalheight = 10;
public void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawOval(ovalposX,ovalposY,ovalwidth,ovalheight)
}
public void redraw(){
    repaint(ovalposX, ovalposY, ovalwidth, ovalheight);
}
(如果这是错误的,我非常抱歉,这是我的第一篇帖子)

有没有办法只重新绘制包含椭圆的空间

阅读上的Swing教程中的部分

工作示例显示了如何使用两个repaint()请求移动正方形:

  • 对象当前位置的第一个(这将导致背景区域从旧位置清除)
  • 第二个用于对象的新位置
  • 在油漆完成之前,这两个请求将合并到一个更大的区域中

    实际上,你真的不需要担心这些细节。我怀疑您是否会注意到重新喷涂整个面板或仅部分面板之间的性能差异

    有没有办法只重新绘制包含椭圆的空间

    阅读上的Swing教程中的部分

    工作示例显示了如何使用两个repaint()请求移动正方形:

  • 对象当前位置的第一个(这将导致背景区域从旧位置清除)
  • 第二个用于对象的新位置
  • 在油漆完成之前,这两个请求将合并到一个更大的区域中


    实际上,你真的不需要担心这些细节。我怀疑您是否会注意到重新绘制整个面板或仅部分面板之间的性能差异。

    简短的回答是,是的,可能是,长的回答是,这取决于您如何计算
    椭圆的位置和大小
    -因为,让我们面对它,如果您有这些信息,然后你就有了重新绘制(int,int,int,int,int)所需的东西。同意@MadProgrammer,但也有一个警告:你需要确保重新绘制两个矩形——明显的位置——新椭圆的位置,但在这样做之前,确保重新绘制旧椭圆的位置,新椭圆正在替换的位置,为了清除任何“脏”像素。简短的答案是,是的,很可能,长的答案是,这取决于你如何计算
    椭圆的位置和大小-因为,让我们面对它,如果你有这些信息,那么你就有了你需要的
    重新绘制(int,int,int,int),int)
    同意@MadProgrammer,但还有一个警告:你需要确保重新绘制两个矩形——明显的位置——新椭圆的位置,但在这样做之前,确保重新绘制旧椭圆的位置,新椭圆正在替换的位置,以便清除任何“脏”像素。