急问:在一个canvas上画一个矩形,矩形随鼠标动而跟着变,可是我写的老是闪得太厉害了,而且鼠标不动时则矩形没了?
在这个canvas上已经有别的背景画图内容了.我是做一个矩形框选择的玩意儿,老做不好.
其中:x,y是当前鼠标坐标,startX,startY是鼠标按下时的坐标,endX,endY是松开鼠标时的坐标.用XORMOde画.
MouseMotionListener MouseMotionListener1 = new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e){
message = "Í϶¯Êó±ê»Ïß";
x = e.getPoint() .x;
y = e.getPoint() .y;
Graphics g = canvas.getGraphics();
g.setXORMode(getBackground() ) ;
//拖动鼠标的时候随着鼠标画出一个矩形框;
g.drawRect(startX,startY,x-startX,y-startY);
g.drawRect(startX,startY,x-startX,y-startY);
}
public void mouseMoved(MouseEvent e){
x = e.getX();
y = e.getY();
tf.setText(message+"\tX="+e.getX() +"\tY="+e.getY() );
}
};
MouseListener mouseListener = new MouseAdapter(){
public void mousePressed(MouseEvent e){
startX = x = endX = e.getPoint() .x;
startY = y = endY = e.getPoint() .y;
message = "°´ÏÂÊó±ê";
tf.setText(message) ;
}
public void mouseReleased(MouseEvent e){
endX = e.getPoint() .x;
endY = e.getPoint() .y;
Graphics g = canvas.getGraphics();
//松开鼠标画出这个矩形框
g.drawRect(startX,startY,endX-startX,endX-startY);
}
};
如上的代码,我在鼠标拖动的时候是有矩形框出来,但闪烁的太厉害了,几乎看不到,最关键的就是当我的鼠标不拖动,停止的时候,那个框就没有了.]
我是用异或模式画的,在拖动鼠标的时候是边画框边擦框,导致了这个结果,我该如何做了?我在网上见过别人画的这个矩形框很稳定的,鼠标到哪,他就画到哪?谢谢!