Установка атрибутов контекста
отображения
Изменяя атрибуты контекста отображения,
приложение Java может установить цвет для
рисования графических изображений, таких как
линии и многоугольники, шрифт для рисования
текста, режим рисования и маску. Возможен также
сдвиг начала системы координат.
Выбор цвета
Изменение цвета, выбранного в контекст
отображения, выполняется достаточно часто. В
классе Graphics для изменения цвета определен метод
setColor, прототип которого представлен ниже:
public abstract void setColor(Color c);
В качестве параметра методу setColor передается
ссылка на объект класса Color, с помощью которого
можно выбрать тот или иной цвет.
Как задается цвет?
Для этого можно использовать несколько
способов.
Прежде всего, вам доступны статические объекты,
определяющие фиксированный набор основных
цветов:
Объект |
Цвет |
public final static Color black; |
черный |
public final static Color blue; |
голубой |
public final static Color cyan; |
циан |
public final static Color darkGray; |
темно-серый |
public final static Color gray; |
серый |
public final static Color green; |
зеленый |
public final static Color lightGray; |
светло-серый |
public final static Color magenta; |
малиновый |
public final static Color orange; |
оранжевый |
public final static Color pink; |
розовый |
public final static Color red; |
красный |
public final static Color white; |
белый |
public final static Color yellow; |
желтый |
Этим набором цветов пользоваться очень просто:
public void paint(Graphics g)
{
g.setColor(Color.yellow);
g.drawString("Hello, Java world!",
10, 20);
. . .
}
Здесь мы привели фрагмент исходного текста
метода paint, в котором в контексте отображения
устанавливается желтый цвет. После этого метод
drawString выведет текстовую строку " Hello, Java world!"
желтым цветом.
Если необходима более точная установка цвета,
вы можете воспользоваться одним из трех
конструкторов объекта Color:
public Color(float r, float g, float b);
public Color(int r, int g, int b);
public Color(int rgb);
Первые два конструктора позволяют задавать
цвет в виде совокупности значений трех основных
цветовых компонент - красной, желтой и голубой
(соответственно, параметры r, g и b). Для первого
конструктора диапазон возможных значений
компонент цвета находится в диапазоне от 0.0 до 1.0,
а для второго - в диапазоне от 0 до 255.
Третий конструктор также позволяет задавать
отдельные компоненты цвета, однако они должны
быть скомбинированы в одной переменной
типа int. Голубая компонента занимает биты от 0
до 7, зеленая - от 8 до 15, красная - от 16 до 23.
Ниже мы привели пример выбора цвета с помощью
конструктора, передав ему три целочисленных
значения цветовых компонент:
g.setColor(new Color(0, 128, 128));
В классе Color определено еще несколько методов,
которые могут оказаться вам полезными:
Метод |
Описание |
public Color brighter (); |
Установка более светлого варианта того
же цвета |
public Color darker (); |
Установка более темного варианта того
же цвета |
public boolean equals (Object obj); |
Проверка равенства цветов текущего
объекта и объекта, заданного параметром |
public int getBlue (); |
Определение голубой компоненты цвета (в
диапазоне от 0 до 255) |
public int getRed (); |
Определение красной компоненты цвета (в
диапазоне от 0 до 255) |
public int getGreen (); |
Определение зеленой компоненты цвета (в
диапазоне от 0 до 255) |
getHSBColor (float h, float s, float b); |
Определение компонент оттенка,
насыщенности и яркости (схема HSB) |
public int getRGB (); |
Определение компонент RGB для цвета,
выбранного в контекст отображения |
public static int HSBtoRGB (float hue, float saturation, float
brightness); |
Преобразование цветового представления
из схемы HSB в схему RGB |
public static float[] RGBtoHSB (int r, int g, int b, float hsbvals[]); |
Преобразование, обратное выполняемому
предыдущей функцией |
public String toString (); |
Получение текстовой строки названия
цвета |
Второй способ установки цвето фона и
изображения заключается в вызове методов setBackground
и setForeground, например:
setBackground(Color.yellow);
setForeground(Color.black);
Здесь мы устанавливаем для окна аплета желтый
цвет фона и черный цвет изображения.
Выбор шрифта
С помощью метода setFont из класса Graphics вы можете
выбрать в контекст отображения шрифт, который
будет использоваться методами drawString, drawBytes и
drawChars для рисования текста. Вот прототип метода
setFont:
public abstract void setFont(Font font);
В качестве параметра методу setFont следует
передать объект класса Font.
Класс Font
Приведем краткое перечисление полей,
конструкторов и методов этого класса.
Поля класса
protected String name;
protected int size;
protected int style;
Битовые маски стиля шрифта
public final static int BOLD;
public final static int ITALIC;
public final static int PLAIN;
Конструкторы
public Font(String name,
int style, int size);
Методы
Сравнение шрифтов
public boolean equals(Object obj);
Определение названия семейства шрифтов
public String getFamily();
Получение шрифта по его характеристикам
public static Font getFont(String nm);
public static Font getFont(String nm,
Font font);
Определение названия шрифта
public String getName();
Определение размера шрифта
public int getSize();
Определение стиля шрифта
public int getStyle();
Получение хэш-кода шрифта
public int hashCode();
Определение жирности шрифта
public boolean isBold();
Проверка, является ли шрифт наклонным
public boolean isItalic();
Проверка, есть ли шрифтовое выделение
public boolean isPlain();
Получение текстовой строки для объекта
public String toString();
Создавая шрифт конструктором Font, вы должны
указать имя, стиль и размер шрифта.
В качестве имени можно указать, например, такие
строки как Helvetica или Courier. Учтите, что в системе
удаленного пользователя, загрузившего ваш аплет,
может не найтись шрифта с указанным вами именем.
В этом случае браузер заменит его на наиболее
подходящий (с его точки зрения).
Стиль шрифта задается масками BOLD, ITALIC и PLAIN,
которые можно комбинировать при помощи
логической операции "ИЛИ":
Маска |
Описание |
BOLD |
Утолщенный шрифт |
ITALIC |
Наклонный шрифт |
PLAIN |
Шрифтовое выделение не используется |
Что же касается размера шрифта, то он
указывается в пикселах.
|