11

Swingの長方形を単色で塗りつぶす方法を知っています。

Graphics2D g2d = bi.createGraphics();
g2d.setColor(Color.RED);
g2d.fillRect(0,0,100,100);

私はそれを画像で埋める方法を知っています:

BufferedImage bi;
Graphics2D g2d = bi.createGraphics();
g2d.setPaint (new Color(r, g, b));
g2d.fillRect (0, 0, bi.getWidth(), bi.getHeight());

しかし、サイズ950x950の長方形を、サイズ100x100のタイルパターンで塗りつぶす方法はありますか?

(パターン画像は100回使用する必要があります)

4

2 に答える 2

14

あなたは正しい軌道に乗っていsetPaintます。ただし、色に設定する代わりに、TexturePaintオブジェクトに設定する必要があります。

Javaチュートリアルから:

TexturePaint クラスのパターンは、BufferedImage クラスによって定義されます。TexturePaint オブジェクトを作成するには、パターンを含むイメージと、パターンの複製と固定に使用される四角形を指定します。次の図は、この機能を表しています。 サンプル画像

BufferedImageテクスチャのがある場合は、次のTexturePaintように作成します。

TexturePaint tp = new TexturePaint(myImage, new Rectangle(0, 0, 16, 16));

ここで、指定された四角形は、並べて表示するソース イメージの領域を表します。

コンストラクタ JavaDoc はhereです。

次に、実行します

g2d.setPaint(tp);

そして、あなたは行ってもいいです。

于 2013-03-10T20:37:59.687 に答える
3

@wchargin が言ったように、使用できますTexturePaint。次に例を示します。

public class TexturePanel extends JPanel {

    private TexturePaint paint;

    public TexturePanel(BufferedImage bi) {
        super();
        this.paint = new TexturePaint(bi, new Rectangle(0, 0, bi.getWidth(), bi.getHeight()));
    }

    @Override
    protected void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;
        g2.setPaint(paint);
        g2.fill(new Rectangle(0, 0, getWidth(), getHeight()));
    }
}
于 2015-05-20T21:24:54.713 に答える