Малювання фігур за допомогою graphics в java, блог тільки про java

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

  • drawLine
  • drawRectangle
  • drawRoundRect
  • draw3DRect
  • drawPolygon
  • drawPolyline
  • drawOval
  • drawArc

Для них існують відповідні fill-методи заповнення фігур, які були передбачені в класі Graphics починаючи з JDK 1.0. В Java 2D API використовується зовсім інша, об'єктно-орієнтована модель, де замість методів застосовуються перераховані нижче класи:

Дані класи реалізують інтерфейс Shape.

Крім того, передбачений клас точки Point2D. який описує точку з координатами х і у. Точки корисні для визначення фігур, але самі по собі фігурами не є.

Для того щоб намалювати фігуру, потрібно створити екземпляр класу, який реалізує інтерфейс Shape. а потім викликати метод draw для класу Graphics2D.

Класи Line2D. Rectangle2D. RoundRectangle2D. Ellipse2D і Arc2D відповідають методам drawLine (). drawRectangle (). drawRoundRect (), drawOval () і drawArc (). Для поняття «тривимірний трикутник» (3D rectangle) не передбачено відповідного методу draw3DRect (). Однак в Java 2D API підтримуються два додаткових класу для малювання кривих другого і третього порядків.

Для малювання багатокутників не передбачено окремого класу (на кшталт Polygon2D), а пропонується клас GeneralPath. який описує контури, що складаються з ліній і кривих другого і третього порядків. Клас GeneralPath можна використовувати для опису багатокутника.

Перераховані нижче класи успадковують загальний клас RectangularShape:

Відомо, що еліпси і дуги не є прямокутниками, але їх можна вписати в прямокутник.

Кожен з класів, назва якого закінчується суфіксом 2D. має два підкласу, що відрізняється способом вказівки координат (вони задаються у вигляді чисел типу float і double). Наприклад, Arc2D.Float і Arc2D.Double.

Для внутрішнього уявлення координат все графічні класи використовують дані типу float. оскільки для них потрібно менше місця для зберігання, ніж для даних типу double. до того ж вони підтримують достатню точність для геометричних обчислень.

Однак, в мові Java обробка чисел float виконується дуже громіздкими і незграбними способами. Тому більшість методів графічних класів використовують параметри типу double і повертають значення типу double.