1

我在使用 Java 中的 setClip 时遇到了一些麻烦。我有一个扩展 JPanel 的类。在该类中,我重写了paintComponent 方法。我的paintComponent 方法看起来像这样:

paintComponent {
    //draw some lines here
    Rectangle whole = g2.getClipBounds();//g2 is my Graphics2D object
    Rectangle part = <some rectangle that is a part of the whole paintable area>;
    g2.setClip(part);
    //draw some more stuff here
    g2.setClip(whole);
}

我看到的问题是裁剪区域中的区域似乎被重复绘制。例如,如果我告诉它画画,它就会画得很好。但是,如果我切换窗口或以其他方式导致它再次绘制相同的东西,则剪切区域不会被清除,而其余区域则不会被清除。这会导致剪切区域上的绘画比其他可绘画区域更粗。

我想我在 setClip 的工作方式上遗漏了一些东西。

任何建议将不胜感激。提前感谢您的帮助。

4

1 回答 1

2

根据 Tom 的建议,从旧的 Graphics 对象创建一个新的 Graphics 对象对我有用。

于 2009-10-06T20:20:15.423 回答