
- •9. Библиотека .Net Framework и библиотеки языка Java
- •9.1. Приложение
- •9.2. Классы, объекты и элементы приложения
- •9.3. Простейшие приложения
- •9.4. Сообщения Windows, события и делегаты
- •9.4.1. Обработка событий мыши на языке c#
- •9.4.3. Обработка событий мыши на языке Java с использованием предопределённого обработчика mouseDown
- •9.4.4. Связь события с несколькими объектами на языке c#
- •Ещё раз о событиях и уведомлении в языке Java
- •9.5.1. Обработка событий элементов интерфейса пользователя в языке Java
- •Обработка событий мыши на языке Java, используя интерфейс MouseListener
- •9.5.3. Обработка событий мыши на языке Java, используя классы адаптеров
- •9.5.4. Обработка событий мыши на языке Java, используя внутренние классы адаптеров и анонимные классы
- •9.5.5. Обработка события закрытия окна
- •Графика
- •9.6.1. Графические объекты
- •Прямоугольник
- •Класс Pen
- •Класс SolidBrush
- •Класс Font
- •Класс Graphics
- •9.7. Событие Paint и его обработчик
- •9.8. Управляющие элементы
- •Класс Button
- •Классы TextBox и TextField
- •Классы UserControl и Panel
- •9.9. Дочерние окна
- •9.10. Исключения
Прямоугольник
C# и C++/CLI. Также часто употребляется тип Rectangle, используемый для создания объекта-прямоугольника с горизонтальными и вертикальными сторонами. Этот прямоугольник можно применять для рисования его пером (pen) или как область, подлежащую заливке некоторым цветом с помощью кисти (brush), или для указания области, занимаемой окном, и так далее.
Тип Rectangle содержит одиннадцать свойств и много функций. Свойство Location, включающее координаты левого верхнего угла (X и Y или Left и Top), определяет положение прямоугольника в окне или на экране, свойства Width и Height задают ширину и высоту прямоугольника, а свойства Right и Bottom - координаты правой нижней точки прямоугольника
Из множества функций нам понадобятся следующие: конструктор Rectangle , функция Offset() смещения, и функция Contains() выявления вхождения точки в прямоугольник. Они понятны из нижеследующих примеров:
C++/CLI.
Rectangle r1; // Создать прямоугольник в стеке
r1.X= 1; r1.Y=2; r1.Width= 10; r1.Height= 20;
Rectangle *r2= new Rectangle (21, 22, 210, 220); // Создать прямоугольник
// в неуправляемой куче
r2->Offset (100, 100);
Point ^p= gcnew Point (3, 4); // Создать точку p2 с p2.X= 3 и p2.Y= 4
if (r1.Contains (*p)) r1=*r2; // Если р2 в r1, то прямоугольник г1
// становится равным прямоугольнику г2
// r1.X= 121 r1.Y= 122 r1.Width= 210 r1.Height= 220;
C#.
Rectangle r1= new Rectangle (1, 2, 4, 5); // r1.X= 1, r1.Y= 2,
// r1.Left= 1, r1.Top= 2, r1.Right= 5, r1.Bottom= 7, r1. Width = 4, r1. Height = 5
r1.Offset (2, 1); // Теперь r1.X= 3, r1.Y= 3,
// r1.Left= 3, r1.Top= 3, r1.Right= 6, r1.Bottom= 8, r1. Width = 4, r1. Height = 5
Point p2= new Point (3, 4); // Создать точку p2 с p2.X= 3 и p2.Y= 4 [JScript] public function Point(int, int);
if (r1.Contains (p2)) { что-либо делаем}; // Если р2 в r1, то что-либо делаем
Java. Прямоугольники представляются объектами класса Rectangle. Конструктор класса Rectangle имеет различные форматы :
Rectangle ();
Rectangle (int x, int y, int w, int h );
Rectangle (Point p, Dimension d );
где х, у – координаты верхнего левого угла прямоугольника;
w, h – ширина и высота прямоугольника;
d – ссылка на объект класса Dimension, задающий размеры прямоугольника.
Среди свойств класса Rectangle выделим свойства x и y, определяющие координаты левого верхнего угла прямоугольника, свойства width и height, определяющие ширину и высоту прямоугольника.
Цвет
C# и C++/CLI. Типом Color представляется цвет. Среди конструкторов структуры Color имеется конструктор
Color (int tr, int r, int g, int b);
который создаёт объект с указанной прозрачностью tr (transparency of a color) и основными составляющими цвета: красный r (red), зелёный g (green) и синий b (blue). Значения прозрачности и составляющих цвета лежат в границах от 0 до 255. Большее их значение означает более плотный цвет и меньшую прозрачность.
Структура Color имеет огромный набор предопределённых цветов, представленных свойствами, например: Brown, Chocolate, Gold, Gray и т.д. Имеется статическая функция FromArgb(), позволяющая получить цвет по значениям трёх составляющих цвета и его интенсивности:
static Color FromArgb (int tr, int r, int g, int b);
Она создаёт структуру Color из компонентов ARGB цвета: прозрачности tr и основных цветов – красного r, зелёного g и синего b.
А другая перегруженная статическая функция
static Color FromArgb (int r, int g, int b);
создаёт структуру Color из компонентов ARGB цвета: прозрачности tr= 255 (непрозрачный цвет) и основных цветов – красного r, зелёного g и синего b. Примеры:
C++/CLI.
Color col (System::Drawing::Color::Gold); // Золотой цвет
Color col1 (Color::Gold); // Золотой цвет
Color col2 (Color::FromArgb (0, 0, 255)); // Синий непрозрачный цвет
Color col3;
col3= Color::FromArgb (0, 0, 255); // Синий цвет
Color col4;
col4= Color::Gold; // Золотой цвет
Color col5 (Color::FromArgb (100, 0, 0, 250)); // Синий полупрозрачный цвет
C#.
Color col3;
col3= Color.FromArgb (0, 0, 255); // Синий цвет
Color col4;
col4= Color.Gold; // Золотой цвет
Color col5= Color.Silver; // Серебренный цвет
Java. Цвет является объектом класса Color. Конструктор класса Color имеет формат:
Color (int r, int g, int b);
Color c= new Color (0, 200, 0); // c – синий цвет
Color c1=c; // c1 – тоже синий цвет
Color c2= new Color (0, 0, 255); // c2 – зелёный цвет
c2= с1; // c2 – теперь синий цвет
c1= Color.yellow; // c1- теперь жёлтый цвет