Рисование геометрических фигур
В этом разделе мы опишем методы класса Graphics, предназначенные для рисования элементарных геометрических фигур, таких как линии, прямоугольники, окружности и так далее. ЛинииДля того чтобы нарисовать прямую тонкую сплошную линию, вы можете воспользоваться методом drawLine, прототип которого приведен ниже: public abstract void drawLine(int x1, int y1,int x2, int y2); Концы линии имеют координаты (x1, y1) и (x2, y2), как это показано на рис. 1. Рис. 1. Рисование прямой линии К сожалению, в контексте отображения не предусмотрены никакие атрибуты, позволяющие нарисовать пунктирную линию или линию увеличенной толщины. Прямоугольники и квадратыСреди методов класса Graphics есть несколько, предназначенных для рисования прямоугольников. Первый из них, с именем drawRect, позволяет нарисовать прямоугольник, заданный координатами своего левого верхнего угла, шириной и высотой: public void drawRect(int x, int y, int width, int height); Параметры x и y задают, соответственно, координаты верхнего левого угла, а параметры width и height - высоту и ширину прямоугольника (рис. 2). Рис. 2. Рисование прямоугольника В отличие от метода drawRect, рисующего только прямоугольную рамку, метод fillRect рисует заполненный прямоугольник. Для рисования и заполнения прямоугольника используется цвет, выбранный в контекст отображения (рис. 3). Рис. 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).
Рис. 4. Рисование прямоугольника с закругленными углами Метод fillRoundRect позволяет нарисовать заполненный прямоугольник с закругленными углами (рис. 5). Рис. 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. Рис. 6. Многоугольник, нарисованный методом drawPolygon В этом многоугольнике шесть вершин с координатами от (x0, y0) до (x5, y5), причем для того чтобы он стал замкнутым, координаты первой и последней вершины совпадают. Второй метод также рисует незаполненный многоугольник, однако в качестве параметра методу передается ссылка на объект Polygon: public void drawPolygon(Polygon p); Класс Polygon достаточно прост. Приведем описание его полей, конструкторов и методов: Поля класса
Количество вершин public int npoints;
Массив координат по оси X public int xpoints[];
Массив координат по оси Y public int ypoints[] Конструкторыpublic Polygon (); public Polygon(int xpoints[], int ypoints[], int npoints); Методы
Добавление вершины public void addPoint(int x, int y);
Получение координат охватывающего прямоугольника public Rectangle getBoundingBox();
Проверка, находится ли точка внутри многоугольника 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 в качестве параметра. Рис. 7. Многоугольник, нарисованный методом fillPolygon Овалы и кругиДля рисования окружностей и овалов вы можете воспользоваться методом drawOval: public abstract void drawOval( int x, int y, int width, int height); Параметры этого методы задают координаты и размеры прямоугольника, в который вписывается рисуемый овал (рис. 8). Рис. 8. Рисование овала Метод fillOval предназначен для рисования заполненного овала (рис. 9). Назначение его параметров аналогично назначению параметров метода drawOval: public abstract void fillOval( int x, int y, int width, int height); Рис. 9. Рисование заполненного овала СегментыМетод drawArc предназначен для рисования незаполненного сегмента (рис. 10). Прототип этого метода приведен ниже: public abstract void drawArc( int x, int y, int width, int height, int startAngle, int arcAngle); Рис. 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 определяют координаты последней. Поделитесь этой записью или добавьте в закладки | Полезные публикации |