|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Вы уже изучили, как потянуть большинство форм, представленных в java.awt.geom пакет. Чтобы создать более сложную геометрию, такую как многоугольники, ломаные линии, или звезды, Вы используете другой class от этого пакета, GeneralPath.
Этот class реализует Shape взаимодействуйте через интерфейс и представляет геометрический путь, созданный из строк, и квадратных и кубических кривых. Эти три конструктора в этом class могут создать объект с правилом проветривания значения по умолчанию (WIND_NON_ZERO), данное вьющееся правило (WIND_NON_ZERO или WIND_EVEN_ODD), или указанная начальная координатная емкость. Вьющееся правило определяет, как внутренняя часть пути определяется.
public void Paint (Graphics g) {
Graphics2D g2 = (Graphics2D) g;
...
}
Создать пустое GeneralPath вызов экземпляра new GeneralPath() и затем добавьте сегменты к форме при использовании следующих методов:
moveTo(float x, float y) – Перемещает текущую точку пути к данной точкеlineTo(float x, float y) – Добавляет линейный сегмент к текущему путиquadTo(float ctrlx, float ctrly, float x2, floaty2) – Добавляет квадратный сегмент кривой к текущему путиcurveTo(float ctrlx1, float ctrly1, float ctrlx2, float ctrly2, float x3, floaty3) – Добавляет кубический сегмент кривой к текущему путиclosePath() – Закрывает текущий путьСледующий пример иллюстрирует, как потянуть ломаную линию при использовании 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() методы.