繁体   English   中英

重新绘制功能如何工作?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM