• Как продвинуть сайт на первые места?
    Вы создали или только планируете создать свой сайт, но не знаете, как продвигать? Продвижение сайта – это не просто процесс, а целый комплекс мероприятий, направленных на увеличение его посещаемости и повышение его позиций в поисковых системах.
    Ускорение продвижения
    Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.
    Начать продвижение сайта


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

    Вывод текста средствами Java 2D

    В классе Font есть конструктор Font(Map 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)
    

    …возвращает контур шрифта в виде объекта shape. Этот контур можно затем заполнить по какому-нибудь образцу или вывести только контур, как показано в листинге 9.6.

    Листинг 9.6. Вывод текста средствами Java 20.

    import java.awt.*;
    import j ava.awt.font.*;
    import j ava.awt.geom.*;
    import java.awt.event.*
    class StillText extends Frame{
    StillText(String s) {
    super(s);
    setSize(400, 200);
    setvisible(true);
    addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent ev){
    System.exit(0);
    }
    });
    }
    public void paint(Graphics gr){
    Graphics2D g = (Graphics2D)gr;
    int w = getSize().width, h = getSize().height;
    FontRenderContext frc = g.getFontRenderContext();
    String s = "Тень";
    Font f = new Font("Serif", Font.BOLD, h/3);
    TextLayout tl = new TextLayout(s, f, frc);
    AffineTransform at = new AffineTransform();
    at.setToTranslation(w/2-tl.getBounds().getwidth()/2, h/2);
    Shape sh = tl.getOutline(at);
    g.draw(sh);
    AffineTransform atsh =
    new AffineTransform(1, 0.0, 1.5, – 1, 0.0, 0.0);
    g.transform(at);
    g.transform(atsh);
    Font df = f.deriveFont(atsh);
    TextLayout dtl = new TextLayout(s, df, frc);
    Shape sh2 = dtl.getOutline(atsh);
    g.fill(sh2); } public static void main(Stnng[] args) {
    new StillText(" Эффект тени");
    }
    }
    

    На рис. 9.6 показан вывод этой программы.

    Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.