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 オブジェクトを作成するとうまくいきました。

于 2009-10-06T20:20:15.423 に答える