Заполните прямоугольник шаблоном в Java Swing

Я знаю, как заполнить прямоугольник в 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 времен)

2 ответов


вы на правильном пути с setPaint. Однако вместо того, чтобы установить его в цвет, вы хотите установить его в TexturePaint


как сказал @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()));
    }
}