2016-12-04 63 views
-1

我想知道下面的函数是如何工作的。通过第一个函数调用, 它只绘制旧方形位置的背景,但第二个函数调用它绘制红色方形。重绘功能如何工作?

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); 
} 
+0

请参阅[*在AWT和Swing *中绘画](http://www.oracle.com/technetwork/java/painting-140037.html)。 – trashgod

+0

http://stackoverflow.com/questions/10852897/repaint-method-in-java我想你会发现你在那里回答 – Koen2K

回答

4

repaint()方法将绘画请求传递给RepaintManager。当收到多个请求的时间很短时,RepaintManager会将两个单独的请求合并成一个请求。

所以,如果你有这样的:

repaint(5, 5, 20, 20); 
... 
repaint(30, 30, 20, 20); 

RepaintManager结束了他们整合成(5, 5, 45, 45)一个重绘。所以这个更大的区域将包括个别请求的区域。那么paintComponent()方法绘制该区域的背景,然后绘制正方形。