Spec-Zone .ru
спецификации, руководства, описания, API
След: 2-D Графика
Урок: Работа с Геометрией
Рисование Произвольных Форм
Домашняя страница > 2-D Графика > Работа с Геометрией

Рисование Произвольных Форм

Вы уже изучили, как потянуть большинство форм, представленных в java.awt.geom пакет. Чтобы создать более сложную геометрию, такую как многоугольники, ломаные линии, или звезды, Вы используете другой class от этого пакета, GeneralPath.

Этот class реализует Shape взаимодействуйте через интерфейс и представляет геометрический путь, созданный из строк, и квадратных и кубических кривых. Эти три конструктора в этом class могут создать GeneralPath объект с правилом проветривания значения по умолчанию (WIND_NON_ZERO), данное вьющееся правило (WIND_NON_ZERO или WIND_EVEN_ODD), или указанная начальная координатная емкость. Вьющееся правило определяет, как внутренняя часть пути определяется.

public void Paint (Graphics g) {
    Graphics2D g2 = (Graphics2D) g;
    ...
}

Создать пустое GeneralPath вызов экземпляра new GeneralPath() и затем добавьте сегменты к форме при использовании следующих методов:

Следующий пример иллюстрирует, как потянуть ломаную линию при использовании GeneralPath:

// draw GeneralPath (polyline)
int x2Points[] = {0, 100, 0, 100};
int y2Points[] = {0, 50, 50, 0};
GeneralPath polyline = 
        new GeneralPath(GeneralPath.WIND_EVEN_ODD, x2Points.length);

polyline.moveTo (x2Points[0], y2Points[0]);

for (int index = 1; index < x2Points.length; index++) {
         polyline.lineTo(x2Points[index], y2Points[index]);
};

g2.draw(polyline);
Это изображение представляет ломаную линию

Этот пример иллюстрирует, как потянуть многоугольник при использовании GeneralPath:

// draw GeneralPath (polygon)
int x1Points[] = {0, 100, 0, 100};
int y1Points[] = {0, 50, 50, 0};
GeneralPath polygon = 
        new GeneralPath(GeneralPath.WIND_EVEN_ODD,
                        x1Points.length);
polygon.moveTo(x1Points[0], y1Points[0]);

for (int index = 1; index < x1Points.length; index++) {
        polygon.lineTo(x1Points[index], y1Points[index]);
};

polygon.closePath();
g2.draw(polygon);
Это изображение представляет многоугольник

Отметьте, что единственная разница между двумя последними примерами кода closePath() метод. Этот метод делает многоугольник из ломаной линии, отодвигая прямую линию к координатам последнего moveTo.

Добавить определенный путь до конца Вашего GeneralPath возразите, что Вы используете один из append() методы. ShapesDemo2D.java пример кода содержит дополнительные реализации произвольных форм.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Рисование Геометрических Примитивов
Следующая страница: Перечеркивание и Заполнение Графических примитивов