Разное

Java graphics: графика — Java Graphics — Stack Overflow на русском

Class Graphics Объект Graphics инкапсулирует информацию о состоянии, необходимую для базовых операций рендеринга, поддерживаемых Java.

java.lang.Object

java.awt.Graphics

Прямые известные подклассы:
DebugGraphics, Graphics2D
public abstract class Graphics extends Object

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

Объект Graphics инкапсулирует информацию о состоянии, необходимую для основных операций визуализации, поддерживаемых Java. Эта информация о состоянии включает в себя следующие свойства:

  • Объект Component , на котором нужно рисовать.
  • Начало трансляции для координат рендеринга и обтравки.
  • Текущий клип.
  • Текущий цвет.
  • Текущий шрифт.
  • Текущая функция логической операции пикселя (XOR или Paint).
  • Текущий цвет чередования XOR (см. setXORMode(java.awt.Color) ).

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

Графическое перо свисает вниз и вправо от пройденного им пути.Это имеет следующие последствия:

  • Если вы рисуете фигуру,которая охватывает заданный прямоугольник,эта фигура занимает один дополнительный ряд пикселей по правому и нижнему краям по сравнению с заполнением фигуры,ограниченной тем же прямоугольником.
  • Если провести горизонтальную линию вдоль той жеyкоординаты в качестве базовой линии строки текста,эта линия рисуется полностью под текстом,за исключением всех нисходящих линий.

Все координаты, которые появляются в качестве аргументов для методов этого объекта Graphics , рассматриваются относительно начала трансляции этого объекта Graphics до вызова метода.

Все операции рендеринга изменяют только пиксели, которые лежат в пределах области, ограниченной текущим клипом, который задается Shape в пользовательском пространстве и управляется программой с помощью объекта Graphics . Этотuser clipпреобразуется в пространство устройства и объединяется сdevice clip, который определяется видимостью окон и границ устройства. Комбинация пользовательского клипа и клипа устройства определяетcomposite clip, который определяет окончательную область отсечения. Пользовательский клип не может быть изменен системой рендеринга для отражения результирующего составного клипа.

Пользовательский клип можно изменить только с помощью методов setClip или clipRect . Все рисования или письма выполняются текущим цветом, с использованием текущего режима рисования и текущего шрифта.

Since:
1.0
See Also:
  • Component
  • clipRect(int, int, int, int)
  • setColor(java.awt.Color)
  • setPaintMode()
  • setXORMode(java.awt.Color)
  • setFont(java.awt.Font)

Constructor Summary

Graphics()

ModifierConstructorDescription
protected

Создает новый объект Graphics .

Method Summary

Модификатор и типMethodDescription
abstract voidclearRect(int x, int y, int width, int height)

Очищает указанный прямоугольник,заполняя его фоновым цветом текущей поверхности рисования.

abstract voidclipRect(int x, int y, int width, int height)

Пересекает текущий клип с указанным прямоугольником.

abstract voidcopyArea(int x, int y, int width, int height, int dx, int dy)

Копирует область компонента на расстояние, указанное dx и dy .

abstract Graphics
create()

Создает новый объект Graphics , который является копией этого объекта Graphics .

Graphicscreate(int x, int y, int width, int height)

Создает новый объект Graphics на основе этого объекта Graphics , но с новой областью перевода и обрезки.

abstract voiddispose()

Утилизирует данный графический контекст и освобождает все используемые им системные ресурсы.

voiddraw3DRect(int x, int y, int width, int height, boolean raised)

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

abstract voiddrawArc(int x, int y, int width, int height, int startAngle, int arcAngle)

Рисует контур круговой или эллиптической дуги,охватывающей указанный прямоугольник.

voiddrawBytes(byte[] data, int offset, int length, int x, int y)

Рисует текст,заданный указанным массивом байтов,используя текущий шрифт и цвет данного графического контекста.

voiddrawChars(char[] data, int offset, int length, int x, int y)

Рисует текст,заданный указанным массивом символов,используя текущий шрифт и цвет данного графического контекста.

abstract booleandrawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, Color bgcolor, ImageObserver observer)

Рисует столько указанной области указанного изображения,сколько доступно в данный момент,масштабируя ее на лету,чтобы она поместилась в указанную область целевой рисуемой поверхности.

abstract booleandrawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer)

Рисует столько указанной области указанного изображения,сколько доступно в данный момент,масштабируя ее на лету,чтобы она поместилась в указанную область целевой рисуемой поверхности.

abstract booleandrawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer)

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

abstract booleandrawImage(Image img, int x, int y, int width, int height, ImageObserver observer)

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

abstract booleandrawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer)

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

abstract booleandrawImage(Image img, int x, int y, ImageObserver observer)

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

abstract voiddrawLine(int x1, int y1, int x2, int y2)

Рисует линию, используя текущий цвет, между точками (x1, y1) и (x2, y2) в системе координат этого графического контекста.

abstract voiddrawOval(int x, int y, int width, int height)

Рисует контур овала.

abstract voiddrawPolygon(int[] xPoints, int[] yPoints, int nPoints)

Рисует замкнутый многоугольник,определяемый массивамиxandycoordinates.

voiddrawPolygon(Polygon p)

Рисует контур многоугольника, определенного указанным объектом Polygon .

abstract voiddrawPolyline
(int[] xPoints, int[] yPoints, int nPoints)

Рисует последовательность соединенных линий,определенных массивамиxandycoordinates.

voiddrawRect(int x, int y, int width, int height)

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

abstract voiddrawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)

Рисует очерченный прямоугольник с круглыми углами,используя текущий цвет этого графического контекста.

abstract voiddrawString(String str, int x, int y)

Рисует текст,заданный указанной строкой,используя текущий шрифт и цвет данного графического контекста.

abstract void
drawString(AttributedCharacterIterator iterator, int x, int y)

Отображает текст указанного итератора, применяя его атрибуты в соответствии со спецификацией класса TextAttribute .

voidfill3DRect(int x, int y, int width, int height, boolean raised)

Рисует трехмерный выделенный прямоугольник,заполненный текущим цветом.

abstract voidfillArc(int x, int y, int width, int height, int startAngle, int arcAngle)

Заполняет круговую или эллиптическую дугу,охватывающую указанный прямоугольник.

abstract voidfillOval(int x, int y, int width, int height)

Заполняет текущим цветом овал,ограниченный указанным прямоугольником.

abstract voidfillPolygon(int[] xPoints, int[] yPoints, int nPoints)

Заполняет замкнутый многоугольник,определенный массивамиxandycoordinates.

voidfillPolygon(Polygon p)

Заполняет полигон,определенный указанным объектом Polygon,текущим цветом графического контекста.

abstract voidfillRect(int x, int y, int width, int height)

Заполняет указанный прямоугольник.

abstract voidfillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)

Заполняет указанный прямоугольник со скругленными углами текущим цветом.

voidfinalize()

Утратил актуальность,подлежит удалению:Этот элемент API подлежит удалению в будущей версии.

Финализация была устаревшей для удаления.

abstract ShapegetClip()

Получает текущую область обрезки.

abstract RectanglegetClipBounds()

Возвращает ограничивающий прямоугольник текущей области обрезки.

RectanglegetClipBounds(Rectangle r)

Возвращает ограничивающий прямоугольник текущей области обрезки.

RectanglegetClipRect()

Deprecated.

Начиная с версии 1.1 JDK, заменено на getClipBounds() .

abstract ColorgetColor()

Получает текущий цвет этого графического контекста.

abstract FontgetFont()

Получает текущий шрифт.

FontMetricsgetFontMetrics()

Получает метрику текущего шрифта.

abstract FontMetricsgetFontMetrics(Font f)

Получает метрики шрифта для указанного шрифта.

booleanhitClip(int x, int y, int width, int height)

Возвращает true,если указанная прямоугольная область может пересекать текущую область обтравки.

abstract voidsetClip(int x, int y, int width, int height)

Устанавливает текущий клип в прямоугольник,заданный заданными координатами.

abstract voidsetClip(Shape clip)

Устанавливает текущую область обрезки в произвольную форму клипа.

abstract voidsetColor(Color c)

Устанавливает текущий цвет этого графического контекста на указанный цвет.

abstract voidsetFont(Font font)

Устанавливает шрифт этого графического контекста на указанный шрифт.

abstract voidsetPaintMode()

Устанавливает режим закраски данного графического контекста для перезаписи места назначения текущим цветом этого графического контекста.

abstract voidsetXORMode(Color c1)

Устанавливает режим закраски данного графического контекста для чередования текущего цвета этого графического контекста и нового указанного цвета.

StringtoString()

Возвращает объект String , представляющий значение этого объекта Graphics .

abstract voidtranslate(int x, int y)

Переводит начало координат графического контекста в точку (x,y) в текущей системе координат.


© 1993, 2022, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian’s OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/19/docs/api/java.desktop/java/awt/Graphics.html

  • 1
  • 2566
  • 2567
  • 2568
  • 2569
  • 2570
  • 6528
  • Next

Методы,объявленные в классе java. lang.


НОУ ИНТУИТ | Лекция | Пакет java.awt

< Практикум 2 || Лекция 11: 123456

Аннотация: Эта лекция начинает рассмотрение базовых библиотек Java, которые являются неотъемлемой частью языка и входят в его спецификацию, а именно описывается пакет java.awt, предоставляющий технологию AWT для создания графического (оконного) интерфейса пользователя – GUI. Ни одна современная программа, предназначенная для пользователя, не обходится без удобного, понятного, в идеале – красивого пользовательского интерфейса. С самой первой версии в Java существует специальная технология для создания GUI. Она называется AWT, Abstract Window Toolkit. Именно о ней пойдет речь в этой лекции. Пакет java.awt претерпел, пожалуй, больше всего изменений с развитием версий Java. Мы рассмотрим дерево компонентов, доступных программисту, специальную модель сообщений, позволяющую гибко обрабатывать пользовательские действия, и другие особенности AWT – работа с цветами, шрифтами, отрисовка графических примитивов, менеджеры компоновки и т. д. Хотя технология AWT включает в себя гораздо больше, чем можно изложить в рамках одной лекции, здесь собраны все необходимые сведения для создания полноценного оконного интерфейса.

Ключевые слова: Java, GUI, программа, производительность, AWT, Abstract Window Toolkit, слово, abstract, foreground, background, deprecated, monospace, пользовательское событие, radio button, splash screen, дерево, ООП, компонент, объект, event, garbage collector, параметр компонента, HTML, класс, инициализирующие действия, java script, координаты, приложение, пользователь, контейнер, интерфейс, фрейм, площадь, значение, controls, layout managers, место, шрифт, цикла, тег, апплет

Введение

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

Библиотеку назвали AWT – Abstract Window Toolkit. Слово abstract в названии указывает, что все стандартные компоненты не являются самостоятельными, а работают в связке с соответствующими элементами операционной системы.

Дерево компонентов

Component

Абстрактный класс Component является базовым для всех компонентов AWT и описывает их основные свойства. Визуальный компонент в AWT имеет прямоугольную форму, может быть отображен на экране и может взаимодействовать с пользователем.

Рассмотрим основные свойства этого класса.

Положение

Положение компонента описывается двумя целыми числами (тип int ) x и y. В Java (как и во многих языках программирования) ось x проходит традиционно – горизонтально, направлена вправо, а ось у – вертикально, но направлена вниз, а не вверх, как принято в математике.

Для описания положения компонента предназначен специальный класс – Point (точка). В этом классе определено два public int поля x и y, а также множество конструкторов и вспомогательных методов для работы с ними. Класс Point применяется во многих типах AWT, где надо задать точку на плоскости.

Для компонента эта точка задает положение левого верхнего угла.

Установить положение компонента можно с помощью метода setLocation(), который может принимать в качестве аргументов пару целых чисел, либо Point. Узнать текущее положение можно с помощью метода getLocation(), возвращающего Point, либо с помощью методов getX() и getY(), которые появились с версии Java 1.2.

Размер

Как было сказано, компонент AWT имеет прямоугольную форму, а потому его размер описывается также двумя целочисленными параметрами – width (ширина) и height (высота). Для описания размера существует специальный класс Dimension (размер), в котором определено два public int поля width и height, а также вспомогательные методы.

Установить размер компонента можно с помощью метода setSize, который может принимать в качестве аргументов пару целых чисел, либо Dimension. Узнать текущие размеры можно с помощью метода getSize(), возвращающего Dimension, либо с помощью методов getWidth() и getHeight(), которые появились с версии Java 1.2.

Совместно положение и размер компонента задают его границы. Область, занимаемую компонентом, можно описать либо четырьмя числами ( x, y, width, height ), либо экземплярами классов Point и Dimension, либо специальным классом Rectangle (прямоугольник). Как легко догадаться, в этом классе определено четыре public int поля, с которыми можно работать и в виде пары объектов Point и Dimension.

Задать границу объекта можно с помощью метода setBounds, который может принимать четыре числа, либо Rectangle. Узнать текущее значение можно с помощью метода getBounds(), возвращающего Rectangle.

Видимость

Существующий компонент может быть как виден пользователю, так и быть скрытым. Это свойство описывается булевским параметром visible. Методы для управления – setVisible, принимающий булевский параметр, и isVisible, возвращающий текущее значение.

Разумеется, невидимый компонент не может взаимодействовать с пользователем.

Доступность

Даже если компонент отображается на экране и виден пользователю, он может не взаимодействовать с ним. В результате события от клавиатуры или мыши не будут получаться и обрабатываться компонентом. Такой компонент называется disabled. Если же компонент активен, его называют enabled. Как правило, компонент некоторым образом меняет свой внешний вид, когда становится недоступным (например, становится серым, менее заметным), но, вообще говоря, это необязательно (хотя очень удобно для пользователя).

Для изменения этого свойства применяется метод setEnabled, принимающий булевский параметр ( true соответствует enabled, false – disabled ), а для получения текущего значения – isEnabled.

Цвета

Разумеется, для построения современного графического интерфейса пользователя необходима работа с цветами.

ru/2010/edi»>Компонент обладает двумя свойствами, описывающими цвета, – foreground и background цвета. Первое свойство задает, каким цветом выводить надписи, рисовать линии и т.д. Второе – задает цвет фона, которым закрашивается вся область, занимаемая компонентом, перед тем, как прорисовывается внешний вид.

Для задания цвета в AWT используется специальный класс Color. Этот класс обладает довольно обширной функциональностью, поэтому рассмотрим основные характеристики.

Цвет задается 3 целочисленными характеристиками, соответствующими модели RGB, – красный, зеленый, синий. Каждая из них может иметь значение от 0 до 255 (тем не менее, их тип определен как int ). В результате (0, 0, 0) соответствует черному, а (255, 255, 255) – белому.

Класс Color является неизменяемым, то есть, создав экземпляр, соответствующий какому-либо цвету, изменить параметры RGB уже невозможно. Это позволяет объявить в классе Color ряд констант, описывающих базовые цвета: белый, черный, красный, желтый и так далее. Например, вместо того, чтобы задавать синий цвет числовыми параметрами (0, 0, 255), можно воспользоваться константами Color.blue или Color.BLUE (второй вариант появился в более поздних версиях).

Для работы со свойством компонента foreground применяют методы setForeground и getForeground, а для background – setBackground и getBackground.

Шрифт

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

Для задания шрифта в AWT существует специальный класс Font, который включает в себя три параметра – имя шрифта, размер и стиль.

Имя шрифта задает внешний стиль отображения символов. Имена претерпели ряд изменений с развитием Java. В версии 1.0 требовалось, чтобы JVM поддерживала следующие шрифты: TimesRoman, Helvetica, Courier. Могут поддерживаться и другие семейства, это зависит от деталей реализации конкретной виртуальной машины. Чтобы узнать полный список во время исполнения программы, можно воспользоваться методом утилитного класса Toolkit. Экземпляры этого класса нельзя создать вручную, поэтому полностью такой запрос будет выглядеть следующим образом:

Toolkit.getDefaultToolkit().getFontList()

В результате будет возвращен массив строк-имен семейств поддерживаемых шрифтов.

В Java 1.1 три обязательных имени были объявлены deprecated. Вместо них был введен новый список, который содержал более универсальные названия, не зависящие от конкретной операционной системы: Serif, SansSerif, Monospaced.

В Java 2 библиотека AWT была существенно пересмотрена и дополнена. Чтобы устранить неоднозначности с разной поддержкой шрифтов на разных платформах, было произведено разделение на логические и физические шрифты. Вторая группа определяется возможностями операционной системы, это те же шрифты, которые могут использовать другие программы, запущенные на этой платформе.

Первая группа состоит из 5 обязательных семейств (добавились Dialog и DialogInput ). JVM устанавливает соответствие между ними и наиболее подходящими из доступных физических шрифтов.

Метод getFontList класса Toolkit был объявлен deprecated. Теперь получить список всех доступных физических шрифтов можно следующим образом:

GraphicsEnvironment.
   getLocalGraphicsEnvironment().
   getAvailableFontFamilyNames()

Класс Font является неизменяемым. После создания можно узнать заданное логическое имя (метод getName ) и соответствующее ему физическое имя семейства (метод getFamily ).

Вернемся к остальным параметрам, необходимым для создания экземпляра Font. Размер шрифта определяет, очевидно, величину символов. Однако конкретные значения измеряются не в пикселах, а в условных единицах (как и во многих текстовых редакторах). Для разных семейств шрифтов символы одинакового размера могут иметь различную ширину и высоту, измеренную в пикселах.

Как и в случае имени шрифта, программист может указать любое значение размера, а JVM поставит ему в соответствие максимально близкий из доступных.

Наконец, последний параметр – стиль. Этот параметр определяет, будет ли шрифт жирным, наклонным и т.д. Если никакие из этих свойств не требуются, указывается Font.PLAIN (параметр имеет тип int и в классе Font определен набор констант для удобства работы с ним). Значение Font.BOLD задает жирный шрифт, а Font.ITALIC – наклонный. Для сочетания этих свойств (жирный наклонный шрифт) необходимо произвести логическое сложение: Font.BOLD|Font.ITALIC.

intuit.ru/2010/edi»>Для работы с этим свойством класса Component предназначены методы setFont и getFont.

Итак, мы рассмотрели основные свойства класса Component. Как легко видеть, все они предназначены для описания графического представления компонента, то есть отображения на экране.

Существует еще одно важное свойство другого характера. Очевидно, что практически всегда пользовательский интерфейс состоит из более чем одного компонента. В больших приложениях их обычно гораздо больше. Для удобства организации работы с ними компоненты объединяются в контейнеры. В AWT существует класс, который так и называется – Container. Его рассмотрение – наша следующая тема. Важно отметить, что компонент может находиться лишь в одном контейнере – при попытке добавить его в другой он удаляется из первого. Рассматриваемое свойство как раз и отвечает за связь компонента с контейнером. Свойство называется parent. Благодаря ему компонент всегда «знает», в каком контейнере он находится.

Дальше >>

< Практикум 2 || Лекция 11: 123456

Документация JDK 19 — Главная

  1. Главная
  2. Ява
  3. Java SE
  4. 19

Обзор

  • Прочтите меня
  • Примечания к выпуску
  • Что нового
  • Руководство по миграции
  • Загрузить JDK
  • Руководство по установке
  • Формат строки версии

Инструменты

  • Технические характеристики инструментов JDK
  • Руководство пользователя JShell
  • Руководство по JavaDoc
  • Руководство пользователя средства упаковки

Язык и библиотеки

  • Обновления языка
  • Основные библиотеки
  • HTTP-клиент JDK
  • Учебники по Java
  • Модульный JDK
  • Руководство программиста API бортового регистратора
  • Руководство по интернационализации

Технические характеристики

  • Документация API
  • Язык и ВМ
  • Имена стандартных алгоритмов безопасности Java
  • банок
  • Собственный интерфейс Java (JNI)
  • Инструментальный интерфейс JVM (JVM TI)
  • Сериализация
  • Проводной протокол отладки Java (JDWP)
  • Спецификация комментариев к документации для стандартного доклета
  • Прочие характеристики

Безопасность

  • Руководство по безопасному кодированию
  • Руководство по безопасности

Виртуальная машина HotSpot

  • Руководство по виртуальной машине Java
  • Настройка сборки мусора

Управление и устранение неполадок

  • Руководство по устранению неполадок
  • Руководство по мониторингу и управлению
  • Руководство по JMX

Client Technologies

  • Руководство по специальным возможностям Java

G — библиотека двухмерной графики Java

G — библиотека двухмерной графики Java

G — это универсальная графическая библиотека, созданная на основе Java 2D, чтобы сделать граф сцены 2D ориентированным графика, доступная клиентским приложениям в высоком уровень, простой в использовании способ.

  • Объектно-ориентированные иерархические графы сцен
  • Многоуровневая графика с поддержкой видимости
  • Гибкие экстенты трехмерного космического мира
  • Поддержка координат мира и устройства
  • Мощная поддержка стилей рендеринга
  • Смарт-аннотации
  • Мощные функции обнаружения объектов
  • Расширяемый
  • Поддержка взаимодействия
  • Поддержка растровых изображений
  • Поддержка встроенного компонента Swing
  • Утилиты для генерации и преобразования геометрии
  • Поддержка экспорта и печати изображений
  • Совместимость с JDK 1.2, 1.3, 1.4 и 1.5
  • Малый вес (~80 КБ), автономный, простой в использовании
  • Бесплатно, с открытым исходным кодом (ЛГПЛ), OSI сертифицирован

Создайте GWindow как графический узел верхнего уровня и свяжите его с Поворотная панель. Добавьте GScene, который определяет область просмотра и мировые масштабы. Создайте иерархию графики с помощью GObjects и добавить на сцену. GObjects состоит из GSegments (полилинии) и другие GОбъекты. Информация о рендеринге предоставляется стиль объекты добавляются на любой уровень графики. Аннотации (GText), растровые изображения (GImage) и компоненты AWT/Swing (GComponent) добавляются в сегменты с указанным подсказки положения. Взаимодействия реализуются через Интерфейс GInteraction.

Графика имеет двойную буферизацию для плавного рендеринга. Реализация интенсивно использует регион для сохранения отслеживать объекты и области повреждения, чтобы сохранить визуализацию трубопровод максимально эффективен.

Версия Библиотека Источник Демонстрации Документация
1,0 (декабрь 2009 г. )) Г.банка G.src.jar G.demos.jar docs.jar (онлайн)
1.1 (не по расписанию)        
2.0 (не запланировано)        
Ниже представлена ​​коллекция некоторых простых программ G . который демонстрирует возможности библиотеки и типичный архитектура для настройки сцены и взаимодействия с пользователем.

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

Чтобы демонстрационные программы были простыми (в отдельных файлах), классы модели реализованы как внутренние классы основного класса. В реальных приложениях они будут обычно находятся в отдельных файлах.

Чтобы запустить демонстрационную программу, выполните следующие простые шаги:

  1. Скачать G.jar на некоторые каталог, например .../gtest/G.jar
  2. Скопируйте/вставьте демонстрационную программу из браузера и сохраните локально: .../gtest/Demo1.java
  3. Скомпилируйте демонстрационную программу: javac - путь к классам G.jar Demo1.java
  4. Запустите демонстрационную программу: java -путь к классам G.jar;. Demo1 (MS/Windows) или java -путь к классам G.jar:. Демо1 (Unix).

Демонстрация 1

Программа, демонстрирующая:

  • Основные настройки графического окна и сцены
  • Настройка цвета фона холста
  • Базовая композиция сцены
  • Использование стиля
  • Генерация примера геометрии
  • Простая аннотация с позиционированием
Программа показывает основные шаги, необходимые для создание графического полотна; Создание Компонент GWindow, GScene (определение окна просмотра и экстента мира), создание GObject (графический объект), состоящий из GSegments (полилинейная геометрия) с необязательным Gтекстовая аннотация. Стиль рендеринга задается через GStyle объекты.

Демо1.java

Демонстрация 1a

Программа, демонстрирующая:

  • Экстент мира и мировые координаты
  • Взаимодействие масштабирования по умолчанию
Эта программа практически идентична предыдущей, но по указание явного размера мира и предоставление геометрии как мировые координаты, холст можно сделать масштабируемым, как показано.

Demo1a.java

Демонстрация 2

Программа, демонстрирующая:

  • Позиционирование среди родственных графических объектов
  • Простое взаимодействие выбора
  • Динамические изменения стиля
  • Matrix4x4 для генерации геометрии
  • Текстовые элементы и стратегия аннотации
  • Относительная геометрия устройства
Программа создает набор графических объектов в заданный порядок экранов. Выбор объекта будет выделите его, и пользователь сможет изменить его положение по глубине через предоставленный графический интерфейс.

Все элементы имеют связанный текст. Обратите внимание, что текст элементы находятся впереди, даже если объект, который они аннотируют находится сзади. Это следует за аннотацией G . стратегия, которая заключается в следующем:

  1. Все аннотации располагаются на переднем плане (аннотации в назад имеют ограниченное использование и поэтому избегаются)
  2. Аннотации никогда не скрывают другие аннотации (частично или нет). видимые аннотации имеют ограниченное применение и поэтому их избегают)
  3. Аннотации никогда не обрезаются (частично видимые аннотации имеют ограниченное применение и поэтому избегаются)
Клиентское приложение может переопределить стратегию аннотации добавив статическую текстовую подсказку .

Демо2.java

Демонстрация 3

Программа, демонстрирующая:

  • Механизм компоновки аннотаций
  • Настройки видимости
  • Пользовательский стиль линии
Создается ряд строк, каждая со связанным текст с подсказкой позиции внизу . Запрошенный положение аннотаций приведет к их перекрытию, но так как это не разрешено движком рендеринга, они перемещаются таким образом, чтобы они стали видимыми и не перекрывались. Аннотации, которые не могут выполнить эти требования, не предоставлено. Это также иллюстрируется изменением размера окно.

Эта программа также показывает различные режимы видимости для GОбъекты. Доступ к кнопкам-переключателям вверху переключение между видимой геометрией, видимой аннотацией, обоими видно или не видно. Видимость – это особенность GObjects и влияет на все поддерево компоненты, внедренные в этот узел.

Демо3.java

Демонстрация 4

Программа, демонстрирующая:

  • Текстовые подсказки
  • Алгоритм аннотации
Случайная полилиния восстанавливается при каждом повторном преобразовании. (т. е. изменение размера). Добавлено несколько текстовых элементов и изменение размера окна иллюстрирует, как аннотации перемещаются в соответствии с новой геометрией полилиния.

Текстовые подсказки позиции состоят из трех компонентов:

  • Положение вдоль линии — первые , последний , топ , дно , осталось , справа и середина (центр ограничивающей рамки полилинии).
  • Расположение относительно точки визуализации — центр , север , юг , восток , запад , северо-восток , северо-запад , юго-восток и юго-запад .
  • Алгоритм — статический (разместите в запрошенной позиции) динамический (отрегулируйте для обеспечения видимости)

Демо4.java

Демонстрация 5

Программа, демонстрирующая:

  • Экстент пользовательского мира
  • Масштаб взаимодействия
  • Цвет фона текста
  • Эффект прозрачности
  • Алгоритм компоновки аннотаций
Эта демонстрационная программа устанавливает явный мировой экстент и поставку геометрия как мировые координаты (координаты с плавающей запятой интерпретируется как мир относительная степень, в то время как целое число координаты интерпретируются как устройство относительное).

Указание геометрии относительно экстента мира делает сцена масштабируется и панорамируется, как показано в этой программе, через ZoomInteraction по умолчанию.

Образцовая кривая имеет набор связанных с ней текстов. Обратите внимание во время масштабирования, как алгоритм аннотации всегда обеспечивает что они никогда не перекрываются и что они всегда на экране.

Демо5.java

Демонстрация 6

Программа, демонстрирующая:

  • Взаимодействие пользовательского выбора
  • Функции обнаружения объектов
  • Наследование стилей
  • Настройка динамического стиля
В сцене визуализируется случайный набор линий, и реализовано пользовательское взаимодействие для выбора строк, которые либо пересекает , либо находится внутри текущего прямоугольник выбора. Выбранные объекты динамически выделен переключением компонента стиля.

Демо6.java

Демонстрация 7

Программа, демонстрирующая:

  • Дополнительные методы аннотирования
  • Пользовательское взаимодействие
  • Использование прозрачных цветов
  • Изменение размера истинного масштаба
Чтобы расположить аннотацию края, невидимые вертикальные и горизонтальные линии рисуются, а тексты позиционируются на концах этих.

Программа реализует взаимодействие, иллюстрирующее, как сцену можно обновить, просто наведя на нее курсор. Движущийся объект использует прозрачный цвет, поэтому фон графика просвечивает.

Программа также иллюстрирует функцию истинного масштаба . сцены; Соотношение масштаба этой сцены фиксировано и независимо от формы окна, как видно при изменении размера. Настройкой сцены по умолчанию является сжатие экстента мира. для запуска текущего окна просмотра.

Демо7.java

Демо 8

Программа, демонстрирующая:

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

Эта программа иллюстрирует эту функцию. Графический объект содержит дочерние узлы, как показано на рисунке. Изначально все узлы наследует цвет фона от сцены, где он явно комплект (белый). Щелчок по узлу устанавливает случайный цвет фона на этом узле. Этот фоновый цвет наследуется по дереву к узлам, которые явно не определяют цвет фона. Нажатие кнопки мыши 2 на узле отключает фон цвет в этом узле.

Демо8.java

Демонстрация 9

Программа, демонстрирующая:

  • Простая анимация
  • Использование геометрии и Matrix4x4 классы для генерации геометрии
  • Изменения динамических аннотаций
Программа создает сцену, которая зависит от кругового угол. Нарисовав объект явно с изменяющимся углом, результат становится анимацией.

Демо9.java

Демо 10

Программа, демонстрирующая:

  • Простое управление изображениями
  • Простое взаимодействие с рисованием
GSegments могут быть связаны с изображениями . Для больших масштабировать фоновые изображения, такие как карта в демо, общий подход заключается в создании единого сегмента координат устройства служит якорем изображения.

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

Обратите внимание, что эта программа принимает изображение в качестве входного параметра. Изображение не предоставляется, но можно использовать любое изображение.

Демо10.java

Демо 11

Программа, демонстрирующая:

  • Пользовательское взаимодействие перемещения
  • Переключение взаимодействий
  • Обновление геометрии экстента мира
  • Перемещение прокрутки
GObject состоит из набора произвольно расположенных GSegments с геометрией, указанной в мировых координатах. Программа реализует взаимодействие перемещения, при котором геометрия перемещаемого объекта постоянно изменяется, поэтому он становится сохраняется при более поздних повторных трансформациях. Это может быть проверено с помощью предоставленного масштабирования.

Эта программа также демонстрирует, как использовать полосы прокрутки с Г . Просто передайте два компонента полосы прокрутки в GScene, который позаботится о деталях.

Демо11.java

Демо 12

Программа, демонстрирующая:

  • Аннотации точек
  • Алгоритм аннотации
  • Цвет фона аннотации
  • Изображения точек
  • Функция печати
Одна линия создается в указанном мировом экстенте. Геометрия не зависит от визуального экстента и области просмотра. и, следовательно, предварительно вычисляется в конструкторе GObject. Все точки связаны с символом (GImage). Для этой цели можно использовать любое изображение; в этом случае используется предопределенный квадратный символ. Аннотация привязана к каждой точке. Алгоритм положения текста установлен на static , чтобы избежать изменения положения текста, если точка становится невидимой из-за масштабирования.

Программа также демонстрирует простоту печати содержимое GWindow.

Демо12.java

Демо 13

Программа, демонстрирующая:

  • Пример интерактивной игры
  • Пользовательское взаимодействие
  • Динамическая подсветка графики
В программе реализованы правила и графическое представление из игры Реверси .

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

Демо13.java

Демо 14

Программа, демонстрирующая:

  • Пример игрового приложения
  • Графическая анимация
  • Переподчинение объекта GObject
Программа оживляет решение знаменитой Башни . Ханой пазл.

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

Демо14.java

Демо 15

Программа, демонстрирующая:

  • Элементарная библиотека карт
  • Использование нескольких сцен
  • Использование экстента мира
  • Масштабирование и прокрутка
  • Красивый номер поколение
Пример иллюстрирует элементарную настройку универсального библиотека графиков. Графика состоит из двух сцен: сцена аннотации находится сзади и содержит аннотация оси, название, фон диаграммы, линии сетки и т. д. Эта сцена охватывает все окно, а геометрия указана в устройстве координаты. Сцена сюжет находится впереди и содержит графики. Эта сцена имеет область просмотра, которая точно соответствует диаграмме. и настройки экстента мира, которые относятся к диаграмме, чтобы значения диаграммы могут быть построены непосредственно.

График можно масштабировать и прокручивать. Сцена аннотации имеет сюжетный мир степень как данные пользователя для корректного обновления аннотация осей при перерисовке.

Обратите внимание, что G — это , а не библиотека диаграмм (например, JFreeChart, например). Но его можно легко использовать как основу для одного, как этот пример иллюстрирует.

Также обратите внимание, что эта программа использует красивые номера модуль для создания аннотации осей.

Демо15.java

Демо 16

Программа, демонстрирующая:

  • Элементарный класс круговой диаграммы
  • Методы аннотации
  • Генерация примера геометрии
Пример иллюстрирует простейший класс круговой диаграммы. Он может содержать несколько помеченных дробей по каждая. визуализируется в заданном стиле.

Метка и процент добавляются к невидимой строке, берут начало в центре каждого сектора и выходят за пределы круговая диаграмма. Менеджер компоновки аннотаций гарантирует, что аннотации следуют этим линиям и не перекрываются.

Еще раз обратите внимание, что G — это , а не библиотека диаграмм, но что его можно легко использовать в качестве основы для одного как показывает этот пример.

Демо16.java

Демо 17

Программа, демонстрирующая:

  • Элементарный класс гистограмм
  • Методы визуализации
Пример иллюстрирует элементарный класс гистограммы. Он может содержать несколько баров, каждый из которых визуализируется в 3D с указанный цвет.

Поскольку G является базовой библиотекой, она не поддерживает сложные формы, такие как 3D-полосы, как показано на рисунке. Однако такие формы могут легко предоставляться путем расширения GObject, а геометрия может быть созданный через общий класс Geometry, который входит в состав G .

Демо17.java

Демо 18

Программа, демонстрирующая:

  • Расширенная обработка изображений
  • Использование нескольких сцен
Эта программа иллюстрирует расширенную обработку изображений. Как и в Demo15, используются две сцены; Устройство родственник сцена для аннотаций и относительная сцена для данных. Данные в этом случае представляют собой сейсмическое изображение. Сцена изображения можно масштабировать и прокручивать. Сцена аннотации имеет доменная сцена как данные пользователя для того, чтобы правильно обновить аннотацию осей при перерисовке.

Обратите внимание, что G никогда не масштабирует изображения. Когда необходимо масштабирование это должно обрабатываться клиентским приложением, обычно в рамках метод draw(), как показано здесь. Это дает приложению полный контроль над процессом масштабирования и позволяет избежать ненужное кэширование и обработка внутри механизма рендеринга.

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

Демо18.java

Демо 19

Программа, демонстрирующая:

  • Настоящее игровое приложение
  • Встроенные компоненты AWT
  • Пользовательское взаимодействие выбора
  • Динамические аннотации
  • Генерация геометрии
Программа является реализацией игры Simon .

Цветные сектора создаются путем соединения двух кругов секторов разного радиуса и удалить лишние вершины.

Кнопка запуска игры представляет собой встроенный JButton. в графике с помощью прикрепленной оболочки GComponent к GSegment.

Демо19.java

Демо 20

Программа, демонстрирующая:

  • Приложение по математике
  • Полилиния производительность
  • Генерация геометрии
Программа генерирует знаменитую снежинку Коха , фрактальная геометрическая фигура с бесконечной окружностью и конечная площадь.

Изначально снежинка имеет три ребра. Пользователь может добавить или удалить уровни снежинки с помощью + и кнопки . Графическая реализация есть просто. Один GSegment содержит кривую и ее геометрия пересчитывается для каждой команды добавления/удаления уровня на основе Текущая геометрия.

Холст можно масштабировать, поэтому фрактальная природа изображения можно проверить форму.

Обратите внимание, что количество точек на кривой увеличивается экспоненциально с количеством уровней, и что производительность соответственно деградирует программа.

Демо20.java

Демо 21

Программа, демонстрирующая:

  • Базовая библиотека нот
  • Расширение GObject
  • Генерация сплайнов
Программа иллюстрирует, как GObjects может быть расширен для представления многократно используемых объектов более высокого уровня, в данном случае нотоносец и нота . Когда должным образом реализованы, эти классы можно использовать в любом графическом приложении.

Правильная реализация собирала бы посох и ноты свойства в подходящих классах и взять экземпляры этих в качестве входных данных для GStave и GNote, описанных здесь. В этой демонстрационной программе только несколько свойств включены, и они являются частью графических классов, чтобы сделать реализация компактная.

Представление заметки основано на векторе и, следовательно, полностью масштабируема.

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

Демо21.java

Демо 23

Программа, демонстрирующая:

  • Генерация расширенной геометрии
  • Динамическое обновление
  • Нарезание резьбы
Полная геометрия для часов генерируется использование Geometry и Matrix4x4 классы.

Геометрия ручки часов обновляется в ответ на задача таймера запускается раз в секунду. Сцена масштабируема.

Демо23.java

Вышеупомянутая библиотека является бесплатным программным обеспечением; вы можете распространять его и/или изменить его в соответствии с условиями Стандартная общественная лицензия ограниченного применения GNU как опубликовано Free Software Foundation; либо версия 2.1 Лицензии или (по вашему выбору) любая более поздняя версия.

Вышеупомянутая библиотека распространяется в надежде, что она будет полезна, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемой гарантии КОММЕРЧЕСКАЯ ПРИГОДНОСТЬ или ПРИГОДНОСТЬ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ. См. Стандартная общественная лицензия ограниченного применения GNU Больше подробностей.

Короче говоря:

  • G.jar бесплатен и может использоваться для любого целей (в том числе коммерческих).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *