Delphi | Сети | ПК | Маршрутизаторы | Моделирование | Протоколы | Экспертные системы | Удаленный доступ | Доменные имена
Аплеты | SQL | Надежность | Задачи | Информационные процессы | JAVA | Отказы изделия | Расчет надежности показателей | Инфсис

Графические примитивы в Java

Интерфейс в языке Java представляет собой "чисто абстрактный класс", т.е. класс, все методы которого являются абстрактными. Производный от интерфейса класс "раскрывает" (implements) интерфейс, предоставляя коды для всех его методов. Класс может расширять только один базовый класс, но раскрывать он может несколько интерфейсов. Переменные интерфейса могут быть только static (т.е., переменные класса, а не объекта) и final (т.е., константы).

Рисование фигур средствами Java2D

Характеристики пера для рисования фигур описаны в интерфейсе stroke. В Java 2D есть пока только один класс, реализующий этот интерфейс — класс BasicStroke.

 

Класс BasicStroke

Конструкторы класса BasicStroke определяют характеристики пера. Основной конструктор

BasicStroke(float width, int cap, int join, float miter, float[] dash, float dashBegin) Двойные интегралы в произвольной области Пример Вычислить интеграл . Область интегрирования R ограничена графиками функций .

задает:

Остальные конструкторы задают некоторые характеристики по умолчанию:

Лучше один раз увидеть," чем сто раз прочитать. В листинге 9.4 определено пять перьев с разными характеристиками, рис, 9.4 показывает, как они рисуют.

Листинг 9.4. Определение перьев

import j ava.awt.*;

import j ava.awt.geom. *;

import j ava.awt.event.*;

class StrokeTest extends Frame{ 

StrokeTest(String s) { 

super (s) ;

setSize(500, 400); 

setvisible(true); 

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent ev)(

System.exit(0); 

}

}); 

}

public void paint(Graphics gr){ 

Graphics2D g = (Graphics2D)gr; 

g.setFont(new Font("Serif", Font.PLAIN, 15)); 

BasicStroke penl = new BasicStroke(20, BasicStroke.CAP_BUTT,

BasicStroke.JOIN_MITER,30); 

BasicStroke pen2 = new BasicStroke(20, BasicStroke.CAP_ROUND,

BasicStroke.JOIN_ROUND); 

BasicStroke репЗ = new BasicStroke(20, BasicStroke.CAP_SQUARE,

BasicStroke.JOIN_BEVEL); 

floatf] dashl = {5, 20}; 

BasicStroke pen4 = new BasicStroke(10, BasicStroke.CAP_ROUND,

BasicStroke.JOIN_BEVEL, 10, dashl, 0); 

float[] dash2 = (10, 5, 5, 5};

BasicStroke pen5 = new BasicStroke(10, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 10, dash2, 0);

g.setStroke(penl);

g.draw(new Rectangle2D.Double(50, 50, 50, 50));

g.draw(new Line2D.Double(50, 180, 150, 180));

g.setStroke(pen2);

g.draw(new Rectangle2D.Double(200, 50, 50, 50));

g.draw(new Line2D.Double(50, 230, 150, 230));

g.setStroke(реnЗ);

g.draw(new Rectangle2D.Double(350, 50, 50, 50));

g.draw(new Line2D.Double(50, 280, 150, 280));

g.drawstring("JOIN_MITER", 40, 130);

g.drawstring("JOIN_ROUND", 180, 130);

g.drawstring("JOINJBEVEL", 330, 130);

g.drawstring("CAP_BUTT", 170, 190);

g.drawstring("CAP_ROUND", 170, 240);

g.drawstring("CAP_SQUARE", 170, 290);

g.setStroke(pen5);

g.drawfnew Line2D.Double(50, 330, 250, 330)); 

g.setStroke(pen4);

g.draw(new Line2D.Double(50, 360, 250, 360)); 

g.drawString("{10, 5, 5, 5,...}", 260, 335); 

g.drawstring( "(5, 10,...}", 260, 365); 

public static void main(String[] args){

new StrokeTest("Моя программа"); 

}

Рис. 9.4. Перья с различными  характеристиками

После создания пера одним из конструкторов и установки пера методом setStroke о можно рисовать различные фигуры методами draw() и fill().

Общие свойства фигур, которые можно нарисовать методом draw о класса Graphics2D, описаны в интерфейсе shape. Этот интерфейс реализован для создания обычного набора фигур — прямоугольников, прямых, эллипсов, дуг , точек — классами Rectangle2D, RoundRectangle2D, Line2D, Ellipse2D, Arc2D, Point2D пакета java.awt.geom. В этом пакете есть еще классы Cubiccurve2D и QuadCurve2D для создания кривых третьего и второго порядка.

Все эти классы абстрактные, но существуют их реализации — вложенные классы Double и Float для задания координат числами соответствующего типа. В Листинге 9.4 использованы классы Rectangle2D.Double И Line2d.Double для вычерчивания прямоугольников и отрезков.

В пакете java.awt.geom есть еще один интересный класс — GeneralPath. Объекты этого класса могут содержать сложные конструкции, составленные из отрезков прямых или кривых линий и прочих фигур, соединенных или не соединенных между собой. Более того, поскольку этот класс реализует интерфейс shape, его экземпляры сами являются фигурами и могут быть элементами других объектов класса GeneralPath.

Математический анализ, лекции по физике Компьютерные сети