我在挥杆时遇到以下问题
我正在实现基本的绘图操作(线条,形状)。当我用左按钮移动鼠标时,我需要重新绘制当前的形状。所以我清除屏幕并重新绘制已绘制的形状,并且当前正在绘制一个
形状以paint()
方法绘制,在鼠标移动事件中,我调用repaint()
(paint()
会自动调用)。问题是每次重绘时屏幕都会强烈闪烁,看起来很难看。请告诉我,我做错了什么?感谢。
答案 0 :(得分:7)
我认为你要找的是double buffering。
答案 1 :(得分:2)
在paint()
中绘制形状
自定义绘画应该在paintComponent()方法中完成,并确保调用super.paintComponent()作为第一行。
自定义绘画也是在JPanel(或JComponent)上完成的,而不是直接在JFrame上完成。
答案 2 :(得分:0)
我有闪烁或闪烁的问题。我使用以下代码解决了它。
public void update(Graphics g) {
paint(g);
}
@Override
public void paint(Graphics g) {
//super.repaint();
if (myimg != null) {
g.drawImage(myimg, 0, 0, this);
}
//update(g);
}
答案 3 :(得分:0)
您无需清除屏幕,只需调用repaint()即可。如果你必须清除屏幕,如果你不使用同步它会闪烁,因为绘画工作是在一个单独的线程中完成的。