Иллюстрированный самоучитель по Java


         

К сожалению, не все шрифты


К сожалению, не все шрифты позволяют задать все атрибуты. Посмотреть список допустимых атрибутов для данного шрифта можно методом getAvailableAttributes() класса Font.
В классе Font есть конструктор FontfMap attributes), которым можно сразу задать нужные атрибуты создаваемому шрифту. Это требует предварительной записи атрибутов в специально созданный для этой цели объект класса, реализующего Интерфейс Map: Класса HashMap, WeakHashMap или Hashtable
(см. главу 7).
Например:
HashMap hm = new HashMap ();
hm.put(TextAttribute.SIZE, new Float(60.Of));
hm.put(TextAttribute.POSTURE, TextAttribute.POSTUREJDBLIQUE);
Font f = new Font(hm);
Можно создать шрифт и вторым конструктором, которым мы пользовались в листинге 9.2, а потом добавлять и изменять атрибуты методами deriveFont () Класса Font.
Текст в Java 2D обладает собственным контекстом — объектом класса FontRenderContext, хранящим всю информацию, необходимую для вывода текста. Получить его можно методом getFontRendercontext () класса
Graphics2D.
Вся информация о тексте, в том числе и об его контексте, собирается в объекте класса TextLayout. Этот класс в Java 2D заменяет класс FontMetrics.
В конструкторе класса TextLayout задается текст, шрифт и контекст. Начало метода paint () со всеми этими определениями может выглядеть так:
public void paint(Graphics gr){ 
Graphics2D g = (Graphics2D)gr;
FontRenderContext frc = g.getFontRenderContex-t(); 
Font f = new Font("Serif", Font.BOLD, 15); 
String s = "Какой-то текст";
TextLayout tl = new TextLayout(s, f, frc) ;    // Продолжение метода }
В классе TextLayout есть не только более двадцати методов
getxxxo,
позволяющих узнать различные сведения о тексте, его шрифте и контексте, но и метод
draw(Graphics2D g, float x, float у)
вычерчивающий содержимое объекта класса TextLayout в графический области g, начиная с точки (х, у).
Еще один интересный метод
getOutline(AffineTransform at)

Содержание  Назад  Вперед