2015-09-23 2 views
0

У меня есть пользовательский виджет для рисования, и я должен нарисовать текст с разными размерами шрифта. Пример:Как выровнять вертикально разные шрифты в paintListener

paintListener = new PaintListener() { 
    public void paintControl(PaintEvent e) { 
     int verticalOffset = 10; 
     Font smallFont = SWTResourceManager.getFont("", 8, SWT.BOLD); 
     e.gc.setFont(smallFont); 
     String text1 = "test1"; 
     Point text1Size = e.gc.textExtent(text1); 
     e.gc.drawText(text1, 0, e.y - text1Size.y - verticalOffset); 

     Font bigFont = SWTResourceManager.getFont("", 12, SWT.NONE); 
     e.gc.setFont(bigFont); 
     String text2 = "test2"; 
     Point text2Size = e.gc.textExtent(text2); 
     e.gc.drawText(text2, e.x - text2Size.x, e.y - text2Size.y - verticalOffset); 
    } 
} 

Интересно, как согласовать эти два текста по вертикали или, если можно вычислить расстояние между зоной возвращенного TextExtent и шрифта базовой линии.

ответ

1

Вы можете получить FontMetrics для текущего шрифта из GC:

ec.gc.setFont(xxxx); 

FontMetrics metrics = e.gc.getFontMetrics(); 

FontMetrics имеет getDescent()getHeight() ... методы, которые позволят вам настроить положение рисунка.

+0

Спасибо, что именно так я и искал! Я трачу много времени на поиски. – Kuba

Смежные вопросы