Spec-Zone .ru
спецификации, руководства, описания, API
След: 2-D Графика

Урок: Начинание с Графикой

Java 2D™ API мощен и сложен. Однако, огромное большинство использования для Java 2-D API использует маленькое подмножество своих возможностей, инкапсулировавших в java.awt.Graphics class. Этот урок удовлетворяет наиболее распространенные потребности разработчиков приложений. Менее общие потребности описываются позже в Усовершенствованных темах в Java 2-D API.

Большинство методов Graphics class может быть разделен на две основных группы:

Методы такой как setFont и setColor определите, как тянут и заполняются, методы представляют.

Это число иллюстрирует, как эти методы касаются графических объектов:

Это число представляет основные методы Графики class

Тянущие методы включают:

В зависимости от Вашей текущей потребности можно выбрать один из нескольких методов в Graphics class, основанный на следующих критериях:

Методы заливки применяются к геометрическим формам и включают fillArc, fillRect, fillOval, fillPolygon.

Чертите ли Вы линию текста или изображения, помните, что в 2-D графике каждая точка определяется ее x и координатами y. Вся ничья и удовлетворяет потребность методов эта информация, которая определяет, где текст или изображение должны быть представлены.

Например, чтобы чертить линию, приложение вызывает следующее:

java.awt.Graphics.drawLine(int x1, int y1, int x2, int y2)

В этом коде (x1, y1) стартовая точка строки, и (x2, y2) конечная точка строки.

Таким образом, код, чтобы провести горизонтальную линию следующие:

Graphics.drawLine(20, 100, 120, 100);

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


Отметьте:  

Если Вы не видите, что апплет работает, Вы должны установить выпуск 6 (или позже) Java Комплект разработчика SE (JDK).


WeatherWizard демонстрационный пример использует JSlider компонент так же как различные графические возможности генерировать и вывести на экран указанный погодный тип. Для получения дополнительной информации о JSlider class видит, Как Использовать раздел Ползунков Учебного руководства Swing.

paint метод WeatherPainter class реализует графические опции. Следующий код тянет изображение, определенное при использовании setupWeatherReport() метод.

...
origComposite = g2.getComposite();
if (alpha0 != null) g2.setComposite(alpha0);
g2.drawImage(img0,
             0, 0, size.width, size.height,
             0, 0, img0.getWidth(null),
             img0.getHeight(null), null);
if (img1 != null) {
    if (alpha1 != null) g2.setComposite(alpha1);
    g2.drawImage(img1,
                 0, 0, size.width, size.height,
                 0, 0, img1.getWidth(null),
                 img1.getHeight(null), null);
} 
...

setFont и drawString методы представляют температуру и погодное условие.

...
// Freezing, Cold, Cool, Warm, Hot,
// Blue, Green, Yellow, Orange, Red
Font font = new Font("Serif", Font.PLAIN, 36);
g.setFont(font);
        
String tempString = feels + " " + temperature+"F";
FontRenderContext frc =
           ((Graphics2D)g).getFontRenderContext();
...
g.setColor(textColor);
int xTextTemp = rX-(int)boundsTemp.getX();
int yTextTemp = rY-(int)boundsTemp.getY();
g.drawString(tempString, xTextTemp, yTextTemp);
        
int xTextCond = rX-(int)boundsCond.getX();
int yTextCond = rY-(int)boundsCond.getY()
                   + (int)boundsTemp.getHeight();
g.drawString(condStr, xTextCond, yTextCond);

fillRect метод позволяет Вам тянуть прямоугольник, заполненный указанным цветом.

...
Rectangle2D boundsTemp 
          = font.getStringBounds(tempString, frc);
Rectangle2D boundsCond 
          = font.getStringBounds(condStr, frc);
int wText = Math.max((int)boundsTemp.getWidth(),
            (int)boundsCond.getWidth());
int hText = (int)boundsTemp.getHeight()
            + (int)boundsCond.getHeight();
int rX = (size.width-wText)/2;
int rY = (size.height-hText)/2;
        
g.setColor(Color.LIGHT_GRAY);
g2.fillRect(rX, rY, wText, hText);
...

Попытайтесь изменить WeatherWizard демонстрационный пример, чтобы изменить графический контент. Например, используйте fillRoundRect метод вместо fillRect или примените другой размер шрифта в setFont метод. Найдите полный код для этого апплета в WeatherWizard.java файл. Демонстрационный пример также требует следующих изображений: weather-cloud.png, weather-rain.png, weather-snow.png, и weather-sun.png расположенный в images каталог.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Предыдущий Урок
Следующая страница: Работа с Геометрией