2012-02-09 7 views
1

Swingで複数の巾着の参加:ジャワ - パネルに、私はpaintComponentはGraphics2Dを使用して別の座標を持つ文字列を描画するために使用し、スイングで

g2.drawString("one", 0, 0); 
g2.drawString("two", 50, 50); 

1にdrawStringに図面を結果の複数を結合する方法はありますか?

編集:私は基本的にユニコード文字を使用して楽譜を描き、別の譜面を描きたいと思います。私はそれを複製するきれいな方法があることを望んでいました。

+0

返信ありがとうございますが、さらに詳しい情報を提供できますか? –

答えて

2

サンプルコード。

private BufferedImage sample; //declare as class member to reuse instance 

@Override 
protected void paintComponent(Graphics g) { 
    if (sample == null) { // lazy initialization, but you could do it even in constructor 
     sample = new BufferedImage(sampleWidth, sampleHeight, bufferedImage.TYPE_INT_ARGB); 
     Graphics2D g2d = sample.createGraphics(); 
     g2d.setColor(Color.WHITE); 
     g2d.fillRect(0, 0, sampleWidth, sampleHeight); 
     g2d.setColor(Color.BLACK); 
     g2d.drawString("Some text", 10, 10); 
     g2d.drawWhateverYouNeed(....); 
    } 

    g.setColor(getBackground()); 
    g.fillRect(0, 0, getWidth(), getHeight()); 
    // draw sample image three times, in sequence 
    for (int i = 0; i < 3; i++) { 
     g.drawImage(sample, 0, i * sampleHeight, this); 
    } 
} 
+0

ご協力いただきありがとうございます! –

0

いいえ、できません。しかし、あなたはそのような組み合わせで何を達成したいですか?よりよい性能?いくつかの特定のレイアウト?

+0

私は基本的にユニコード文字を使って音楽譜を描き、別の譜面を描きたい。私はそれを複製するきれいな方法があることを望んでいました。 –

+2

レンダリングの一部をたくさんコピーする必要がある場合は、サンプル画像をレンダリングして、必要なだけ何度でもその画像をコンポーネントに描画するために、 'BufferedImage'のインスタンスを使用することを検討してください。あなたは 'paintComponent'メソッドの外にサンプルを保存して、それを(初期化時に)1回レンダリングすることさえできます。 ** UPD。**このアプローチがあなたに合っていれば、別の答えでサンプルコードを提供します。 – Mersenne

+0

はい、アプローチは私の目標に合っており、後で私のプロジェクトに必要なものです。あなたが素晴らしいだろういくつかのサンプルコードを提供することができれば!前もって感謝します! –

関連する問題