Java - объединение нескольких drawString в Swing - PullRequest
1 голос
/ 10 февраля 2012

В Swing на панели я использую paintComponent для рисования строк с разными координатами с помощью Graphics2D:

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

Есть ли способ объединить несколько полученных чертежей в одну drawString?

Редактировать: Я в основном рисую музыкальный нотный стан, используя символы Юникода, и я хочу нарисовать другой музыкальный лист. Я надеялся, что найдется чистый способ ее дублирования.

Ответы [ 2 ]

2 голосов
/ 10 февраля 2012

Пример кода.

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 голосов
/ 10 февраля 2012

Нет, нет способа сделать это. Но что вы хотите достичь с таким сочетанием? Лучшая производительность? Какой-то конкретный макет?

...