Главная » Java, Web » Графические элементы

0

Класс Graphics содержит большое число методов, созданных для рисования различных фигур: линий, прямоугольников и овалов. При этом форма определяется координатами (х, у). Фигуры рисуются текущим цветом рисования графического контекста. Текущий цвет рисования устанавливается равным цвету фона компонента при создании контекста, затем цвет этот может быть изменен при помощи метода setcoior о .

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

Метод drawString

Синтаксис:

drawString(String str, int x, int y);

Выводит текст строки str. При выводе текста используется текущий цвет и текущий шрифт графического контекста. Координаты х и у определяют положение текста, х — это положение левого конца строки, у — вертикальная координата базовой линии строки (линия, на которой расположены символы букв, некоторые части букв могут заходить ниже базовой линии, например, хвостик буквы у).

Метод drawLine

Синтаксис:

drawLine(int xl, int yl, int x2, int y2); Рисует линию от точки (xl, yl) к точке (х2, у2).

Метод drawRect

Синтаксис:

drawRect(int х, int у, int width, int height);

Рисует прямоугольник с верхним левым углом в точке (х, у) с высотой height и шириной width. Для рисования прямоугольника вокруг компонента вдоль его границ используется функция следующего вида:

g.drawRect(0, 0, getSize().width-1, getSize().height- 1) ; здесь g — графический контекст.

Метод drawOval

Синтаксис:

drawOval(int х, int у, int width, int height);

Рисует овал внутри прямоугольника с указанными параметрами (см. "Метод drawRect () ")?

Метод drawRoundRect

Синтаксис:

drawRoundRect(int х, int у, int width, int height, int xdiam, int ydiam);

Рисует прямоугольник с закругленными углами. Основной прямоугольник задается первыми четырьмя параметрами х, у, width, height. Степень закругления определяется параметрами xdiam и ydiam. Закругления — это дуги эллипса с горизонтальным диаметром xdiam и вертикальным диаметром ydiam. Часто используются значения для диаметров, равные 16.

Метод draw3DRect

Синтаксис:

draw3DRect(int х, int у, int width, int height, boolean raised); Рисует "трехмерный" (с оттенением) прямоугольник.

Метод drawArc

Синтаксис:

drawArc(int х, int у, int width, int height, int startAngle, int arcAngle);

Рисует дугу эллипса, вписанного в прямоугольник с указанными параметрами (координаты верхнего левого угла — х и у, высота — height, и ширина — width), параметры arcAngle и startAngle — это угол арки и начальный угол в градусах соответственно. При этом 0 градусам соответствует положение часовой стрелки на 3 часах, отсчет ведется против часовой стрелки. Для рисования дуги окружности следует установить высоту прямоугольника равной его ширине, эллипс, вписанный в квадрат — это окружность.

Метод fHIRect

Синтаксис:

fillRect(int х, int у, int width, int height);

Рисует закрашенный прямоугольник (здесь х и у — координаты верхнего левого угла прямоугольника, width — его ширина, a height — высота). Для заполнения цветом всего компонента следует использовать метод

g.fillRect(0, 0, getSize().width, getSize().height);

Метод fiHOval

Синтаксис:

FillOval(int х, int у, int width, int height); Рисует закрашенный овал.

Метод fillRoundRect

Синтаксис:

fillRound(int x, int у, int width, int height, int xdiam, int ydiam);

Рисует закрашенный прямоугольник со скругленными углами (здесь х и у — координаты верхнего левого угла прямоугольника, width — его ширина, a height — высота, xdiam и ydiam — диаметры скругляющего эллипса по осям х и у соответственно.

Метод fill3DRect

Синтаксис:

fill3DRect(int х, int у, int width, int height, boolean raised); Рисует закрашенный прямоугольник с трехмерным эффектом.

Метод fillArc

Синтаксис:

fillArc(int х, int у, int width, int height, int startAngle, int arcAngle);

Рисует закрашенный сегмент (здесь х и у — координаты верхнего левого угла прямоугольника, width — его ширина, a height — высота, startAngle — начальный угол сегмента, arcAngle — угловой размер сегмента).

Рассмотрим пример с рисованием. Напишем апплет jAppiet. Используем компоненты jcomponent, которые вставим в класс, созданный на основе класса jpanei. Этот класс будет вложен внутрь основного класса апплета. Рисование будет осуществлено при помощи метода paintComponent о .

Апплет (листинги 1.12 и 1.13) осуществляет рисование большого числа копий текста на темно-сером фоне. Каждая копия текста имеет случайный цвет, используется пять шрифтов разного размера и стиля. Строка содержит текст "Vsem Privet!". При загрузке апплета в окне браузера появляется апплет со случайным образом расположенными надписями разного цвета, размера и стиля (рис. 1.14). При повторной загрузке апплета расположение надписей меняется (рис. 1.15). Этот апплет работает нормально при любой величине, которая указывается в теге <appiet>.

Рис. 1.14. Загрузка апплета "Vsem Privet!"

 

Рис. 1.15. Повторная загрузка того же апплета

Этот апплет воспроизводит 33 экземпляра строки, расположенных в разных местах, отображающихся разным цветом, стилем и пятью шрифтами на темно-сером фоне. При каждом обращении к методу paintcomponent () генерируются новые случайные значения. При компиляции создается два класса RandomStrings.class И RandomStrings$Display.class. Оба требуются для работы апплета.

I Листинг 1.12. Файл StringApplet.java                                                                                                 I

impo гt j ava.awt.*; import javax.swing.*;

public class StringApplet extends JApplet { String message; // сообщения для отображения Font fontl, font2, font3, font4, font5; // пять шрифтов Display drawingSurface; // объект для рисования — холст public void init() {

// автоматически вызывается для инициализации апплета message = getParameter("message") ; if (message == null)

message = "Vsem Privet!"; fontl = new Font("Serif", Font.BOLD, 14);

font2 = new Font("SansSerif", Font.BOLD + Font.ITALIC, 24);

font3 = new Font("Monospaced", Font.PLAIN, 20);

font4 = new Font("Dialog", Font.PLAIN, 30);

font5 = new Font("Serif", Font.ITALIC, 36);

drawingSurface = new Display();

drawingSurface.setBackground(Color.darkGray);

setContentPane(drawingSurface); // панель апплета заменяем холстом

// drawingSurface

class Display extends JPanel { // панель для отображения компонентов public void paintcomponent(Graphics g) {

super.paintcomponent(g); // метод paintcomponent вызывается из

// суперкласса JPanel int width = getSize().width; // ширина компонента width int height = getSize().height; // высота компонента height

for (int i = 0; i < 33; i++) {

// шрифт выбирается случайным образом

int fontNum = (int)(5*Math.random()) + 1;

switch (fontNum) {

case 1:

g.setFont(fontl); break; case 2:

g.setFont(font2); break; case 3:

g.setFont(font3); break; case 4:

g.setFont(font4); break; case 5:

g.setFont(font5); break;

} // конец switch // выбор цвета

float hue = (float)Math.random(); g.setColor(Color.getHSBColor(hue, 1.0F, 1.0F)); // выбор положения int x, у;

x = -50 + (int) (Math.random()*(width+4 0)); у = (int)(Math.random()*(height+20)); // вывод строки

g.drawstring(message,x,y); }

}

Листинг 1.13. Файл StringApplet.html

<p align=center>

<applet code="StringApplet.class" width=580 height=340> </applet> </p>

Источник: Будилов В. А. Интернет-программирование на Java. — СПб.: БХВ-Петербург, 2003. — 704 е.: ил.

По теме:

  • Комментарии