Оглавление

Рисование в окне
Контекст отображения
Установка атрибутов
Определение атрибутов
Рисование фигур
Аплет Draw
Исходные тексты
Проект аплета

    Рисование геометрических фигур

    В этом разделе мы опишем методы класса Graphics, предназначенные для рисования элементарных геометрических фигур, таких как линии, прямоугольники, окружности и так далее.

    Линии

    Для того чтобы нарисовать прямую тонкую сплошную линию, вы можете воспользоваться методом drawLine, прототип которого приведен ниже:

    public abstract void drawLine(int x1, 
      int y1,int x2, int y2);

    Концы линии имеют координаты (x1, y1) и (x2, y2), как это показано на рис. 1.

    pic01.gif (2176 bytes)

    Рис. 1. Рисование прямой линии

    К сожалению, в контексте отображения не предусмотрены никакие атрибуты, позволяющие нарисовать пунктирную линию или линию увеличенной толщины.

    Прямоугольники и квадраты

    Среди методов класса Graphics есть несколько, предназначенных для рисования прямоугольников. Первый из них, с именем drawRect, позволяет нарисовать прямоугольник, заданный координатами своего левого верхнего угла, шириной и высотой:

    public void drawRect(int x, int y, 
      int width, int height);

    Параметры x и y задают, соответственно, координаты верхнего левого угла, а параметры width и height - высоту и ширину прямоугольника (рис. 2).

    pic02.gif (2472 bytes)

    Рис. 2. Рисование прямоугольника

    В отличие от метода drawRect, рисующего только прямоугольную рамку, метод fillRect рисует заполненный прямоугольник. Для рисования и заполнения прямоугольника используется цвет, выбранный в контекст отображения (рис. 3).

    pic03.gif (3126 bytes)

    Рис. 3. Рисование заполненного прямоугольника

    Прототип метода fillRect приведен ниже:

    public abstract void fillRect(int x, int y, 
      int width, int height);

    Метод drawRoundRect позволяет нарисовать прямоугольник с закругленными углами:

    public abstract void drawRoundRect(int x, 
      int y, int width,
      int height, int arcWidth, int arcHeight);

    Параметры x и y определяют координаты верхнего левого угла прямоугольника, параметры width и height задают, соответственно его ширину и высоту.

    Размеры эллипса, образующего закругления по углам, вы можете задать с помощью параметров arcWidth и arcHeight. Первый из них задает ширину эллипса, а второй - высоту (рис. 4).

    pic04.gif (3197 bytes)

     

    Рис. 4. Рисование прямоугольника с закругленными углами

    Метод fillRoundRect позволяет нарисовать заполненный прямоугольник с закругленными углами (рис. 5).

    pic05.gif (3887 bytes)

    Рис. 5. Рисование заполненного прямоугольника с закругленными углами

    Назначение параметров этого метода аналогично назначению параметров только что рассмотренного метода drawRoundRect:

    public abstract void fillRoundRect(int x,
     int y,
     int width, int height,
     int arcWidth, int arcHeight);

    Метод fill3Drect предназначен для рисования выступающего или западающего прямоугольника:

    public void fill3DRect(int x, int y,
      int width, int height, boolean raised);

    Если значение параметра raised равно true, рисуется выступающий прямоугольник, если false - западающий. Назначение остальных параметров аналогично назначению параметров метода drawRect.

    Многоугольники

    Для рисования многоугольников в классе Graphics предусмотрено четыре метода, два из которых рисуют незаполненные многоугольники, а два - заполненные.

    Первый метод рисует незаполненный многоугольник, заданный массивами координат по осям X и Y:

    public abstract void drawPolygon(
      int xPoints[],
      int yPoints[], int nPoints);

    Через параметры xPoints и yPoints передаются, соответственно, ссылки на массивы координат по оис X и Y. Параметр nPoints задает количество точек в массивах.

    На рис. 6 показан многоугольник, нарисованный методом drawPolygon.

    pic06.gif (2719 bytes)

    Рис. 6. Многоугольник, нарисованный методом drawPolygon

    В этом многоугольнике шесть вершин с координатами от (x0, y0) до (x5, y5), причем для того чтобы он стал замкнутым, координаты первой и последней вершины совпадают.

    Второй метод также рисует незаполненный многоугольник, однако в качестве параметра методу передается ссылка на объект Polygon:

    public void drawPolygon(Polygon p);

    Класс Polygon достаточно прост. Приведем описание его полей, конструкторов и методов:

    Поля класса

    • npoints

    Количество вершин

    public int npoints;
    • xpoints

    Массив координат по оси X

    public int xpoints[];
    • ypoints

    Массив координат по оси Y

    public int ypoints[]

    Конструкторы

    public Polygon ();
    public Polygon(int xpoints[], 
      int ypoints[], int npoints);

    Методы

    • addPoint

    Добавление вершины

    public void addPoint(int x, int y);
    • getBoundingBox

    Получение координат охватывающего прямоугольника

    public Rectangle getBoundingBox();
    • inside

    Проверка, находится ли точка внутри многоугольника

    public boolean inside(int x, int y);

    Ниже мы показали фрагмент кода, в котором создается многоугольник, а затем в него добавляется несколько точек. Многоугольник рисуется методом drawPolygon:

    Polygon p = new Polygon();
    p.addPoint(270, 239);
    p.addPoint(350, 230);
    p.addPoint(360, 180);
    p.addPoint(390, 160);
    p.addPoint(340, 130);
    p.addPoint(270, 239);
    g.drawPolygon(p);

    Если вам нужно нарисовать заполненный многоугольник (рис. 7), то для этого вы можете воспользоваться методами, приведенными ниже:

    public abstract void fillPolygon(
     int xPoints[],
     int yPoints[], int nPoints);
    
    public void fillPolygon(Polygon p);

    Первый из этих методов рисует многоугольник, координаты вершин которого заданы в массивах, второй - получая объект класса Polygon в качестве параметра.

    pic07.gif (3128 bytes)

    Рис. 7. Многоугольник, нарисованный методом fillPolygon

    Овалы и круги

    Для рисования окружностей и овалов вы можете воспользоваться методом drawOval:

    public abstract void drawOval(
      int x, int y,
      int width, int height);

    Параметры этого методы задают координаты и размеры прямоугольника, в который вписывается рисуемый овал (рис. 8).

    pic08.gif (2591 bytes)

    Рис. 8. Рисование овала

    Метод fillOval предназначен для рисования заполненного овала (рис. 9). Назначение его параметров аналогично назначению параметров метода drawOval:

    public abstract void fillOval(
      int x, int y,
      int width, int height);

    pic09.gif (3122 bytes)

    Рис. 9. Рисование заполненного овала

    Сегменты

    Метод drawArc предназначен для рисования незаполненного сегмента (рис. 10). Прототип этого метода приведен ниже:

    public abstract void drawArc(
     int x, int y,
     int width, int height, 
     int startAngle, int arcAngle);

    pic10.gif (3409 bytes)

    Рис. 10. Рисование незаполненного сегмента

    Параметры x, y, width и height задают координаты прямоугольника, в который вписан сегмент.

    Параметры startAngle и arcAngle задаются в градусах. Они определяют, соответственно, начальный угол и угол разворота сегмента.

    Для того чтобы нарисовать заполненный сегмент, вы можете воспользоваться методом fillArc:

    public abstract void fillArc(int x, int y,
      int width, int height, 
      int startAngle, int arcAngle);

    Задание области ограничения

    Если для окна аплета задать область ограничения, то рисование будет возможно только в пределах этой области. Область ограничения задается методом clipRect, прототип которого мы привели ниже:

    public abstract void clipRect(
     int x, int y,
     int width, int height);

    Параметры x, y, width и height задают координаты прямоугольной области ограничения.

    Копирование содержимого прямоугольной области

    Метод copyArea позволяет скопировать содержимое любой прямоугольной области окна аплета:

    public abstract void copyArea(
     int x, int y,
     int width, int height, int dx, int dy);

    Параметры x, y, width и height задают координаты копируемой прямоугольной области. Область копируется в другую прямоугольную область такого же размера, причем параметры dx и dy определяют координаты последней.



Java | Продукты и решения | Технологии | Сервис и обучение
О компании | Партнеры | Новости | Поиск
Sun Microsystems Inc. Corporate Information Our partners News and Events Search on site Java Computing Products and Solutions Technologies and Researches Education and Service Content



Сайт создан в системе uCoz