2012-02-09 1 views
1

스윙에 여러 졸라의 참여 :자바 - 패널에, 내가 paintComponent에이 Graphics2D를 사용하여 서로 다른 좌표 문자열을 그리는 데 사용할, 스윙

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

하나 개하면서 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' 메쏘드 밖에서 샘플을 저장하고 한 번 (초기화시) 렌더링 할 수 있습니다. ** UPD. **이 접근 방식이 적합한 경우 샘플 코드를 별도의 답변으로 제공합니다. – Mersenne

+0

그렇습니다.이 접근법은 저의 목표에 부합하며 나중에 프로젝트에서 필요할 것입니다. 위대 할 샘플 코드를 제공 할 수 있다면! 미리 감사드립니다! –

관련 문제