Spec-Zone .ru
спецификации, руководства, описания, API
|
Java 2D™ API мощен и сложен. Однако, огромное большинство использования для Java 2-D API использует маленькое подмножество своих возможностей, инкапсулировавших в java.awt.Graphics
class. Этот урок удовлетворяет наиболее распространенные потребности разработчиков приложений. Менее общие потребности описываются позже в Усовершенствованных темах в Java 2-D API.
Большинство методов Graphics
class может быть разделен на две основных группы:
Методы такой как setFont
и setColor
определите, как тянут и заполняются, методы представляют.
Это число иллюстрирует, как эти методы касаются графических объектов:
Тянущие методы включают:
drawString
– Для рисования текста g.drawString("Hello", 10, 10);
drawImage
– Для рисования изображений g.drawImage(img, 0, 0, width, height, 0, 0, imageWidth, imageHeight, null);
drawLine
, drawArc
, drawRect
, drawOval
, drawPolygon
– Для рисования геометрических форм g2.draw(new Line2D.Double(0, 0, 30, 40));
В зависимости от Вашей текущей потребности можно выбрать один из нескольких методов в Graphics
class, основанный на следующих критериях:
Методы заливки применяются к геометрическим формам и включают fillArc
, fillRect
, fillOval
, fillPolygon
.
Чертите ли Вы линию текста или изображения, помните, что в 2-D графике каждая точка определяется ее x и
Например, чтобы чертить линию, приложение вызывает следующее:
java.awt.Graphics.drawLine(int x1, int y1, int x2, int y2)
В этом коде (x1, y1) стартовая точка строки, и (x2, y2) конечная точка строки.
Таким образом, код, чтобы провести горизонтальную линию следующие:
Graphics.drawLine(20, 100, 120, 100);
Демонстрационный пример ниже накапливает все упомянутые методы. Переместите ползунок, чтобы вывести на экран различные погодные типы.
Если Вы не видите, что апплет работает, Вы должны установить
WeatherWizard
демонстрационный пример использует JSlider
компонент так же как различные графические возможности генерировать и вывести на экран указанный погодный тип. Для получения дополнительной информации о JSlider
class видит
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
каталог.