2010-11-04 72 views
1
void multiLine (int x, int y, String label, Graphics2D g) { 

    AffineTransform fontAT = new AffineTransform(); 
    Font theFont = g.getFont(); 
    fontAT.rotate(-Math.PI/2); 
    Font theDerivedFont = theFont.deriveFont(fontAT); 
    g.setFont(theDerivedFont); 

    AttributedString attrStr = new AttributedString(label); 
    // Get iterator for string: 
    AttributedCharacterIterator characterIterator = attrStr.getIterator(); 

    // Get font context from graphics: 
    FontRenderContext fontRenderContext = g.getFontRenderContext(); 

    // Create measurer: 
    LineBreakMeasurer measurer = new LineBreakMeasurer(characterIterator, 
      fontRenderContext); 

    while (measurer.getPosition() < characterIterator.getEndIndex()) { 
     TextLayout textLayout = measurer.nextLayout(200); 
     y += textLayout.getAscent(); //Have tried changing y to x 
     textLayout.draw(g, x, y); 

     y += textLayout.getDescent() + textLayout.getLeading(); //Have tried changing y to x 
    } 
    g.setFont(theFont); 

} 

我期待這樣做可以垂直打印行,但它不會,關於如何解決此問題的任何想法。使用graphics2D包裝/旋轉圖像上的文本

這輸出文本水平包裝。

編輯:更改了問題,以正確反映我正在嘗試實現的目標

+0

它現在做了什麼?看起來你正在畫水平線。 – Khalos 2010-11-04 07:32:59

+0

是的,它繪製了水平線。 – kal 2010-11-04 07:33:59

回答

0

減少包裝寬度。 200太大,所以它不包裝。如果你想讓每個字符放在一個新行中,請將它設置爲0。

TextLayout textLayout = measurer.nextLayout(0); 
+0

我希望它也可以旋轉,但是轉換並沒有考慮到這一點。 – kal 2010-11-04 15:52:27