2012-01-18 55 views
3

我有一个绘制方法,我希望drawLine在我调用repaint()后保留在屏幕上。 fillOval将会移动,没关系。但是我希望drawLine只在另一个位置重新绘制而不删除它。在使用重绘时绘制图形而不删除它们()

public void paint(Graphics g) { 
    super.paint(g); 

    g.setColor(Color.RED); 
    g.drawLine(x, y, x+10, y+10); 
    g.setColor(Color.BLACK); 
    g.fillOval(x - radius, y - radius, radius * 2, radius * 2); 

} 
+0

你的意思是你想让原来的标准线除了它的新位置还在吗?或者你只是想在重绘后的新位置重绘同一行? – OnResolve

+5

自定义绘画是通过覆盖'paintComponent()'方法而不是paint()方法来完成的。人们如何使用paint()方法继续查找示例? – camickr

+0

@camickr简单回答--->在所有Java Swing示例库中,没有任何异常,例如http://www.java2s.com/Tutorial/Java/0261__2D-Graphics/Catalog0261__2D-Graphics.htm TEC ... – mKorbel

回答

2

可以存储x并在List每一行的y。在每个repaint(),你只是重绘所有存在于List

+1

这种做法似乎是多余的。为什么不限制您重新绘制的区域,而不是重新绘制所有内容并进行不必要的记帐? – mre

+0

@mre真的取决于他想做什么。在下一次重画的情况下,它不是多余的,他想通过我们说的10像素等来翻译这些线。 –

+2

@mre虽然可以限制理论上重绘的区域,但这种方法会更加稳健。如果由于选择了重叠的另一个窗口或者窗口最小化而导致窗口部分模糊,则整个应用程序屏幕可能需要重新绘制。然后什么?你必须做一个完整的重绘。然后你需要所有的记录来重新创建屏幕上的内容。 –