2

グラフィックス オブジェクトの create() 関数は、現在のグラフィックス オブジェクトの新しいコピーを作成すると思いました

これは私のコードでした

Graphics temp;
temp = g.create();
temp.drawString("hello world",100,100);
g.fillRect(200,200,50,50);

私の理解では、temp は g のコピーになっているため、temp の変更は g に反映されません。したがって、fillRect 関数により、私の出力は単なる四角形になるはずでした。しかし、ペイント出力で文字列と四角形の両方を取得しています。なぜこれが起こっているのか、それを止める方法は?

4

3 に答える 3

0

TextString や Box などのオブジェクトのクラスを作成して、次のようなペイント メソッドを持たせることはできませんか。

public void paint(Graphics g){
    g.setColor(Color.RED);
    g.fillRect(50, 50, 100, 100);
}

そして、オブジェクトを描画している場所で、box.paint(g); を呼び出します。またはあなたがあなたのオブジェクトと呼んだものは何でも。

このようにして、他のオブジェクトに影響を与えることなく、いつでもオブジェクトのプロパティを変更して個別に描画することができます。

于 2013-06-28T17:21:34.833 に答える
0

Graphics.createは、それを生成したGraphicsオブジェクトの完全なセクションまたは指定されたセクションを提供します。これは新しい Graphics オブジェクトではありません。

グラフィックス オブジェクトに描画する (そしてそのオブジェクトを再利用する) 場合は、BufferedImageの派生物であるOffscreenImageを使用し、そこから OffscreenImage.getGraphics に描画することをお勧めします。

于 2015-08-25T16:28:39.790 に答える