[英]How Does the repaint function work?
我想知道下面的功能是如何工作的。 在第一个函数调用中,它仅绘制旧正方形位置上的背景,而在第二个函数调用中,它绘制红色正方形。
if(CURR_X != x || CURR_Y != y) {
//The square is moving, repaint backgorund
//over the old square location
repaint(CURR_X,CURR_Y,CURR_W+OFFSET,CURR_H+OFFSET);
//Update coordinates
square.setX(x);
square.setY(y);
repaint(square.getX(),square.getY(),
square.getWidth()+OFFSET,square.getHeight()+OFFSET);
}
repaint()方法将绘制请求传递给RepaintManager。 如果在短时间内收到多个请求,则RepaintManager会将两个单独的请求合并为一个请求。
因此,如果您有类似以下内容:
repaint(5, 5, 20, 20);
...
repaint( 30, 30, 20, 20);
RepaintManager
最终将它们合并为(5, 5, 45, 45)
RepaintManager
的单个重绘。 因此,该较大的区域将包括两个单独请求的区域。 因此, paintComponent()
方法绘制该区域的背景,然后绘制正方形。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.