Программирование на С++ - eDrive
Программирование на С++ - eDrive Программирование на С++ - eDrive
30 В файле кода модуля определить статическую функцию Clear класса Shape, управляющую удалением изображения из элемента Image: void Shape::Clear () { { Form1–>Image1–>Canvas–>Brush–>Color = clWhite; TRect myRect = Rect (0, 0, Form1–>Image1–>Width, Form1–>Image1–>Height); Form1–>Image1–>Canvas–>FillRect (myRect); } 2. Производный класс-образец. В том же файле заголовка модуля объявить производный класс Circle: class Circle : Shape { int cx, cy, rad; public: Circle (int x, int y, int r, TColor p, TColor b) : cx (x), cy (y), rad (r), Shape (p, b) {} void Draw (); void Move (int x, int y); void Fill (); }; В конструкторе класса переменные x, y и r задают координаты центра и радиус окружности, а p и b – цвета линии и заливки, передаваемые конструктору базового класса. Функция Draw рисует окружность, Move перемещает ее, а Fill закрашивает. В файле кода модуля надо определить эти методы класса Circle: void Circle::Draw () { Form1–>Image1–>Canvas–>Pen–>Color = penColor; TRect myRect = Rect (cx – rad/2, cy – rad/2, cx + rad/2, cy + rad/2); Form1–>Image1–>Canvas–>Ellipse (myRect); } void Circle::Move (int x, int y) { cx += x; cy += y; } void Circle::Fill () { Form1–>Image1–>Canvas–>Brush–>Color = brushColor; Form1–>Image1–>Canvas–>FloodFill (cx, cy, penColor, fsBorder); } 3. Применение класса Circle. В классе формы объявить указатель на объект базового класса: Shape *myShape; в конструкторе создать соответствующий объект: myShape = (Shape*) new Circle (100, 150, 10, clGray, clYellow);
31 а в деструкторе удалить его: delete myShape; В форму проекта поместить элемент рисования Image, необходимые поля и три кнопки. Обработчик первой из них очищает канву и рисует: Shape::Clear (); myShape–>Draw (); обработчик второй смещает рисунок на расстояния, указанные в полях: Shape::Clear (); myShape–>Move (StrToInt (Edit1–>Text), StrToInt (Edit2–>Text)); myShape–>Draw (); а обработчик третьей закрашивает фигуру: myShape–>Fill (); 4. Разработка и применение заданного класса. В дополнение к классу Circle разработать производный от Shape класс предусмотренной вариантом фигуры и выполнить все операции – рисование, закрашивание и перемещение – одновременно для двух объектов: окружности и заданной фигуры. Для рисования рекомендуются такие методы класса Canvas, как Polyline, Polygon, Rectangle, RoundRect, Ellipse. Задачи 1. Используя компонент ColorBox, предоставить пользователю возможность задания цвета закрашивания. 2. Организовать рисование фигур из начальной позиции, а не из текущих координат. 3. Реализовать перемещение закрашенных фигур. 4. Ограничить область движения фигур границами канвы. 5. Реализовать раздельное движение фигур вместо совместного движения. 6. Исключить ввод пользователем некорректных данных в поля. Работа 13. Потоки Задание Для знакомства с многопоточным приложением создать проект, в котором бесконечное число раз рисуется фигура, заданная в табл. 1, с переменными размерами и координатами и с информацией о количестве нарисованных фи-
- Page 1 and 2: Федеральное агентс
- Page 3 and 4: Содержание Общие т
- Page 5 and 6: Кнопка управления
- Page 7 and 8: { for (int i = 0; i < gridRows; ++i
- Page 9 and 10: 9 void MySwap (double &a, double &b
- Page 11 and 12: 11 Для статистическ
- Page 13 and 14: 13 Задачи 1. Заменить
- Page 15 and 16: double stat = *max_element (myVecto
- Page 17 and 18: 17 подготовленным п
- Page 19 and 20: 19 for (int i=0; iColCount; ++i) f
- Page 21 and 22: 21 ADO панели визуаль
- Page 23 and 24: 23 В этом фрагменте
- Page 25 and 26: TImage *im; TSearchRec sr; 25 Ин
- Page 27 and 28: 27 Работа 11. Програм
- Page 29: 29 Series1->Assign (myForm1->Series
- Page 33 and 34: 33 ка. Методы Lock и Unloc
- Page 35 and 36: 35 Рекомендации 1. Ст
- Page 37 and 38: 37 10. Подключение сп
- Page 39 and 40: 39 требуемый заголо
31<br />
а в деструкторе удалить его:<br />
delete myShape;<br />
В форму проекта поместить элемент рисования Image, необходимые поля<br />
и три кнопки. Обработчик первой из них очищает канву и рисует:<br />
Shape::Clear ();<br />
myShape–>Draw ();<br />
обработчик второй смещает рисунок <strong>на</strong> расстояния, указанные в полях:<br />
Shape::Clear ();<br />
myShape–>Move (StrToInt (Edit1–>Text), StrToInt (Edit2–>Text));<br />
myShape–>Draw ();<br />
а обработчик третьей закрашивает фигуру:<br />
myShape–>Fill ();<br />
4. Разработка и применение заданного класса. В дополнение к классу Circle<br />
разработать производный от Shape класс предусмотренной вариантом фигуры<br />
и выполнить все операции – рисование, закрашивание и перемещение<br />
– одновременно для двух объектов: окружности и заданной фигуры. Для<br />
рисования рекомендуются такие методы класса Canvas, как Polyline, Polygon,<br />
Rectangle, RoundRect, Ellipse.<br />
Задачи<br />
1. Используя компонент ColorBox, предоставить пользователю возможность<br />
задания цвета закрашивания.<br />
2. Организовать рисование фигур из <strong>на</strong>чальной позиции, а не из текущих коорди<strong>на</strong>т.<br />
3. Реализовать перемещение закрашенных фигур.<br />
4. Ограничить область движения фигур границами канвы.<br />
5. Реализовать раздельное движение фигур вместо совместного движения.<br />
6. Исключить ввод пользователем некорректных данных в поля.<br />
Работа 13. Потоки<br />
Задание<br />
Для з<strong>на</strong>комства с многопоточным приложением создать проект, в котором<br />
бесконечное число раз рисуется фигура, задан<strong>на</strong>я в табл. 1, с переменными<br />
размерами и коорди<strong>на</strong>тами и с информацией о количестве <strong>на</strong>рисованных фи-